[CMake] Per Target CMAKE_C??_FLAGS Reset/Redefinition
David Hauck
davidh at netacquire.com
Mon May 25 16:04:35 EDT 2015
Hi,
I've been searching for a definitive discussion of this but haven't been successful finding it. I have a (Unix Makefile) CMakeLists.txt project sub-directory that defines several (3) targets (for executable and shared targets). I'm trying to reset/redefine the CMAKE_C??_FLAGS (specifically CMAKE_C_FLAGS) property on one of the targets via the following statement in the CMakeLists.txt file:
set_property(TARGET <target_name> PROPERTY CMAKE_C_FLAGS "-Wall -shared")
set_property(TARGET <target_name> PROPERTY CMAKE_C_FLAGS_DEBUG "-g")
set_property(TARGET <target_name> PROPERTY CMAKE_C_FLAGS_RELEASE "-O3")
However, this isn't working and the resulting target compilation is using the directory's value for these properties. Other redefinitions of per-target properties (e.g., INCLUDE_DIRECTORIES) do seem to take so I'm wondering if certain properties are per-directory only and aren't meaningful with the "set_property(TARGET ...)" construct?
If I move the target to its own sub-directory and use the following CMakeLists.txt commands instead the compile flags are properly (re)set:
SET (CMAKE_C_FLAGS "-Wall -shared")
SET (CMAKE_C_FLAGS_DEBUG "-g")
SET (CMAKE_C_FLAGS_RELEASE "-O3")
Oddly the aforementioned "set_property(TARGET..." constructs in place of the above "SET(CMAKE..." constructs also fail to reset the flags in this new directory so this doesn't seem related to the sub-directory CMakeLists.txt file when multiple targets are defined.
I must have missed something obvious related to this in the documentation and/or the mailing list/Google. Any ideas?
Thanks,
-David
More information about the CMake
mailing list