我想在两个不同的目标中包含一个.cpp文件(在运行CMake后成为两个VS项目).我想为这些项目设置不同的COMPILE_FLAGS.
但是,当我这样做的时候
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)
Run Code Online (Sandbox Code Playgroud)
"flags2"适用于这两个项目,因此看起来第3行中的属性被覆盖而第2行没有考虑.这是真的还是我错过了什么?有办法解决这个问题吗?
谢谢!
sak*_*kra 18
将set_target_properties命令应用于项目而不是源文件:
add_executable(project1 myfile.cpp)
set_target_properties(project1 PROPERTIES COMPILE_FLAGS "flags1")
add_executable(project2 myfile.cpp)
set_target_properties(project2 PROPERTIES COMPILE_FLAGS "flags2")
Run Code Online (Sandbox Code Playgroud)
目标上设置的标志将应用于目标中的所有源.
如果遵循每个子目录哲学的一个目标,则可以使用add_definitions以添加编译标志来执行以下操作.
# in ./CMakeLists.txt
add_subdirectory(project1)
add_subdirectory(project2)
Run Code Online (Sandbox Code Playgroud)
# in ./project1/CMakeLists.txt:
add_definitions("flags1")
add_executable(project1 ../myfile.cpp)
Run Code Online (Sandbox Code Playgroud)
# in ./project2/CMakeLists.txt:
add_definitions("flags2")
add_executable(project2 ../myfile.cpp)
Run Code Online (Sandbox Code Playgroud)
add_definitions适用于在此子目录中编译的所有文件及其下的文件.您可以使用以下命令将标志应用于特定文件:
set_source_files_properties(myfile.cpp PROPERTIES COMPILE_FLAGS "flags")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7341 次 |
| 最近记录: |