[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