Different compile flags for same file in different targets

Viewed 9349

I would like to include a .cpp-file in two different targets (becoming two VS projects after running CMake). I would like to set different COMPILE_FLAGS for these projects.

However, when I do

SET_TARGET_PROPERTIES(myfile.cpp PROPERTIES COMPILE_FLAGS "flags1")
ADD_EXECUTABLE(project1 myfile.cpp)
SET_TARGET_PROPERTIES(myfile.cpp PROPERTIES COMPILE_FLAGS "flags2")
ADD_EXECUTABLE(project2 myfile.cpp)

the flags2 applies for both projects, so it seems like the properties are overwritten on line 3 and not considered on line 2. Is this true or am I missing something? Is there a way to solve this?

5 Answers

I solved this problem using 2 flags, one for the source-file, one for the target.

macro(enable_on_source target src)
    set_source_files_properties(${src}
                                PROPERTIES COMPILE_OPTIONS "-OptionModule")
    set_target_properties(${target}
                          PROPERTIES COMPILE_OPTIONS "-OptionTarget")
endmacro()

and during compilation I'm doing things only if both options are set.

This completely independent of directory-scopes and what not.

Related