[CMake] Adding definitions to compile one file ?

Petr Kmoch petr.kmoch at gmail.com
Thu Jan 21 09:51:33 EST 2016


On Thu, Jan 21, 2016 at 3:26 PM, Vania Joloboff <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...
>

This would erase the previous value of the property COMPILE_DEFINITIONS
specified on the source file(s), if you've already provided one for it. But
the globally specified compilation definitions, flags etc. do not get
copied into these per-source properties. Instead, the final command line
used for compiling a source is combined from the global, target, and source
file properties (and relevant variables and other things).

If you really need to append to the property, though, you can use APPEND or
APPEND_STRING arguments before the PROPERTY keyword; refer to CMake docs
for more details.

Petr


>
> 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
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20160121/49166703/attachment.html>


More information about the CMake mailing list