[CMake] Changing definitions at compile time

Michael Wild themiwi at gmail.com
Tue Jun 14 13:26:28 EDT 2011


On 06/14/2011 07:12 PM, Kfir Lavi wrote:
> 
> 
> On Tue, Jun 14, 2011 at 8:04 PM, Andreas Naumann
> <Andreas-Naumann at gmx.net <mailto:Andreas-Naumann at gmx.net>> wrote:
> 
>     Am 14.06.2011 18:12, schrieb Kfir Lavi:
>>     Hi,
>>     I need to compile the code twice. Once with -DA and once with -DB
>>     My code look like this:
>>     add_definitions(-DA)
>>     add_library(${mylib_A} SHARED ${myfiles})
>>     remove_definitions(-DA)
>>
>>     add_definitions(-DB)
>>     add_library(${lib_B} SHARED ${myfiles})
>>     remove_definitions(-DB)
>>
>>     What cmake does is to define A and then remove it, so in compile
>>     time, there
>>     is now definition of A or B.
>>
>>     How do I tell cmake that the remove needs to  be in compile time?
>>
>>     Regards,
>>     Kfir
>
>     You want to create two libraries A and B from the same sourcefiles
>     ${myfiles}. The first one have to be compiled with -DA and the
>     second one with -DB, haven't it?
> 
>     So you could simply set the COMPILE_FLAGS property with
>     add_library(A ${myfiles})
>     add_library(B ${myfiles})
> 
>     set_target_properties(A PROPERTIES COMPILE_FLAGS "-DA")
>     set_target_properties(B PROPERTIES COMPILE_FLAGS "-DB")
> 
>     Regards,
>     Andreas
> 
> 
> Thanks,
> This solved my problems.
> 
> Again thanks,
> Kfir

Except that COMPILE_FLAGS is the wrong property. You should use
COMPILE_DEFINITIONS without the -D prefix.

Michael


More information about the CMake mailing list