[CMake] Rules for files with non-standard extensions

Philip Lowman philip at yhbt.com
Thu Mar 5 08:22:01 EST 2009


On Tue, Mar 3, 2009 at 3:06 PM, Steven Wilson <
steven.wesley.wilson at gmail.com> wrote:

> As a new member of the list, I just wanted to say thanks for providing this
> forum as a place to get answers about cmake!
> First, the problem:   I have a software system composed of a number of
> source files in C.   These files have an alternate file extension .bc.   In
> order to compile these files, the build system first needs to pass them
> through two preprocessors; 1. The C preprocessor and 2. a homegrown
> preprocessor that handles a private C language extension and converts
> occurrences of that language extension to standard C.   Finally the
> preprocessed source is handed to the C compiler.    My initial port of this
> build system used the following kind of construct:
>
> macro(process_bc_files INPUT_FILE)
>
> add_custom_command(OUTPUT ${INPUT_FILE}.c
>
> COMMAND preprocessor1 ${INPUT_FILE} > tmpfile
> COMMAND preprocessor2 tmpfile > ${INPUT_FILE}.c
>
> )
>
>
>
> endmacro(process_bc_files)
>
> process_bc_file(/path/to/main.bc)
>
> add_executable(Foo main.bc.c)
>
> Now this construct works and the build functions correctly, but I have
> noticed a problem that I need to have corrected.   When I use the Xcode
> generator on my project I get a nice Xcode project except that the source
> files listed for executable Foo are the processed files (*.bc.c) not the
> original .bc files.  This state of course makes sense because the .bc.c
> files are used in the add_executable line, but it makes the Xcode project
> file incorrect because developers will not edit the .bc.c files but the
> originals.
>
> The question:  Does a way to do something like the following exist?
>
> add_executable(Foo main.bc)
>
> Ie can I create some rules that act like the add_custom_command so that the
> add_executable refers to the processed output while the Xcode project refers
> to the source file?
>

You might be able to use the HEADER_FILE_ONLY property of
set_source_files_properties() to get it to show up in the project, but
simply not have it compiled.  I know this works in Visual Studio (not sure
about Xcode).

-- 
Philip Lowman
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20090305/7c6806f1/attachment.htm>


More information about the CMake mailing list