[CMake] Append to property COMPILE_DEFINITIONS
Florian Lindner
mailinglists at xgm.de
Sun Jul 23 22:32:03 EDT 2017
Am 22.07.2017 um 15:36 schrieb Craig Scott:
>
> On Tue, Jul 18, 2017 at 8:50 PM, Florian Lindner <mailinglists at xgm.de <mailto:mailinglists at xgm.de>> wrote:
>
> #Works, but I would prefer to have it just once for all targets and at the top of the file
> set_property(TARGET testprecice APPEND
> PROPERTY COMPILE_DEFINITIONS "FOO")
>
> > BTW, you don't include the -D when adding to COMPILE_DEFINITIONS, just put FOO, not -DFOO. Have a read of the docs, they may give you other clues for this property (e.g. using the ..._CONFIG variant of it).
>
> Yeah, I found out that I don't have to add -D. The docs say that generator expressions are preferable to using _CONFIG
> variant.
>
>
> So just to be crystal clear, this is what I would have expected to work if you wanted the symbol FOO to be defined for
> Debug builds for all targets in the current directory and below:
>
> set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:Debug>:FOO>)
Put that in my CMakeLists.txt. Works, but only when I build in the same directory where the CMakeLists.txt file is
located, i.e. in source builds. That way:
set_property(DIRECTORY ${CMAKE_SOURCE_DIR} APPEND PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:Debug>:FOO>)
it works also out of tree.
Still, I don't undertand what is wrong with:
set_property(GLOBAL APPEND PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:Debug>:-FOO>)
?
Best,
Florian
>
> Note that this directory property is NOT used to initialise the corresponding target property. Rather, BOTH are combined
> to give the final set of command line compile definitions. It does not matter whether this directory property is set
> before or after you call add_executable() within the same CMakeLists.txt file (or more accurately, within the same
> directory scope).
>
>
>
> >
> >
> > On Tue, Jul 18, 2017 at 1:21 PM, Florian Lindner <mailinglists at xgm.de <mailto:mailinglists at xgm.de> <mailto:mailinglists at xgm.de <mailto:mailinglists at xgm.de>>> wrote:
> >
> > Am 18.07.2017 um 10:59 schrieb Craig Scott:
> > > You appear to be setting a GLOBAL property where you probably meant DIRECTORY. You could also consider setting the
> > > target property instead rather than applying it to all targets (unless that's what you want).
> >
> > I tried to set the property on all targets, therefore I thought GLOBAL is the right thing.
> >
> > However,
> >
> > set_property(DIRECTORY "${CMAKE_SOURCE_DIR}/src" APPEND
> > PROPERTY COMPILE_DEFINITIONS "-DFOO")
> >
> > hasn't had any effect either.
> >
> > set_property(TARGET testprecice APPEND
> > PROPERTY COMPILE_DEFINITIONS "FOO")
> >
> > works. But setting it on all targets is exactly what I want. How can I do that?
> >
> > Best,
> > Florian
> >
> > >
> > >
> > > On Tue, Jul 18, 2017 at 12:56 PM, Florian Lindner <mailinglists at xgm.de <mailto:mailinglists at xgm.de> <mailto:mailinglists at xgm.de <mailto:mailinglists at xgm.de>>
> > <mailto:mailinglists at xgm.de <mailto:mailinglists at xgm.de> <mailto:mailinglists at xgm.de <mailto:mailinglists at xgm.de>>>> wrote:
> > >
> > > Hello,
> > >
> > > I want to add compile definitions. Since I want to use generator expressions, I can't use add_definitions, but
> > have to
> > > use the COMPILE_DEFINITIONS property, but neither:
> > >
> > > set_property(GLOBAL APPEND
> > > PROPERTY COMPILE_DEFINITIONS "-DFOO")
> > >
> > > for testing
> > >
> > > or
> > >
> > > set_property(GLOBAL APPEND
> > > PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:Debug>:-DDebug>)
> > >
> > > which should be final result, produces any -DFOO compiler switches.
> > >
> > > I also tried placing it before and after the add_executable call.
> > >
> > > What is wrong with that call?
> > >
> > > Thanks,
> > > Florian
>
>
> --
> Craig Scott
> Melbourne, Australia
> https://crascit.com
More information about the CMake
mailing list