[CMake] Adding definitions to compile one file ?

CHEVRIER, Marc marc.chevrier at sap.com
Thu Jan 21 09:30:50 EST 2016


Use APPEND keyword:
set_property(
   SOURCE source.cpp
APPEND PROPERTY COMPILE_DEFINITIONS
     VAR1=${MY_VAR1} VAR2=${MY_VAR2}
)






On 21/01/16 15:26, "CMake on behalf of Vania Joloboff" <cmake-bounces at cmake.org on behalf of vania.joloboff at inria.fr> wrote:

>HI Petr
>
>Thanks for the suggestion.
>But this will erase the existing compile definitions, won't it ?
>So may be I should do a get_property first,
>append my new definitions and reset the property ?
>I'll try anyway...
>
>Vania
>
>On 01/21/2016 03:21 PM, Petr Kmoch wrote:
>> Hi Vania.
>>
>> For your case, it's best to forget about the 
>> not-as-convenient-as-they-could-be convenience functions 
>> set_*_properties, and just invoke set_property:
>>
>> set_property(
>>   SOURCE source.cpp
>>   PROPERTY COMPILE_DEFINITIONS
>>     VAR1=${MY_VAR1} VAR2=${MY_VAR2}
>> )
>>
>> Petr
>>
>> On Thu, Jan 21, 2016 at 3:14 PM, Vania Joloboff 
>> <vania.joloboff at inria.fr <mailto:vania.joloboff at inria.fr>> wrote:
>>
>>     Hi
>>
>>     I want to add two definitions to compile one specific files
>>     in addition to the global definitions.
>>     I have the following problem. If I use
>>
>>     set_source_files_properties(source.cpp
>>     PROPERTIES
>>     COMPILE_DEFINITIONS VAR1=${MY_VAR1} VAR2=${MY_VAR2} )
>>
>>     then I get error message incorrect number of arguments for
>>     set_source_files_properties
>>
>>     If I put
>>     set_source_files_properties(source.cpp
>>     PROPERTIES COMPILE_DEFINITIONS "VAR1=${MY_VAR1} VAR2=${MY_VAR2}" )
>>
>>     then it generates strangely enough the compile command
>>
>>     /usr/bin/c++ -DVAR1="path1 VAR2=path2" ... source.cpp
>>
>>     with the double quotes as above, which gives a weird value to VAR1
>>     and no value to VAR2
>>
>>     If I use twice set_source_files_properties
>>     the first one is overwritten by the second
>>     and I only get the definition of VAR2
>>
>>     What am I supposed to do ?
>>
>>     Thankx
>>
>>     PS I am using cmake 3.2.2 on Linux Mint.
>>
>>     -- 
>>
>>     Powered by www.kitware.com <http://www.kitware.com>
>>
>>     Please keep messages on-topic and check the CMake FAQ at:
>>     http://www.cmake.org/Wiki/CMake_FAQ
>>
>>     Kitware offers various services to support the CMake community.
>>     For more information on each offering, please visit:
>>
>>     CMake Support: http://cmake.org/cmake/help/support.html
>>     CMake Consulting: http://cmake.org/cmake/help/consulting.html
>>     CMake Training Courses: http://cmake.org/cmake/help/training.html
>>
>>     Visit other Kitware open-source projects at
>>     http://www.kitware.com/opensource/opensource.html
>>
>>     Follow this link to subscribe/unsubscribe:
>>     http://public.kitware.com/mailman/listinfo/cmake
>>
>>
>
>-- 
>
>Powered by www.kitware.com
>
>Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
>
>Kitware offers various services to support the CMake community. For more information on each offering, please visit:
>
>CMake Support: http://cmake.org/cmake/help/support.html
>CMake Consulting: http://cmake.org/cmake/help/consulting.html
>CMake Training Courses: http://cmake.org/cmake/help/training.html
>
>Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
>Follow this link to subscribe/unsubscribe:
>http://public.kitware.com/mailman/listinfo/cmake


More information about the CMake mailing list