[CMake] Rules for files with non-standard extensions

Steven Wilson steven.wesley.wilson at gmail.com
Thu Mar 5 11:29:40 EST 2009


Thanks for the suggestion,  I will give it a try!

On Thu, Mar 5, 2009 at 6:22 AM, Philip Lowman <philip at yhbt.com> wrote:

> 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/8c88a3e5/attachment-0001.htm>


More information about the CMake mailing list