cmake - 不同目标中同一文件的不同编译标志

标签 cmake

我想在两个不同的目标中包含一个.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)


“ flags2”适用于两个项目,因此属性似乎在第3行中被覆盖,而在第2行中未考虑。这是真的,还是我缺少什么?有办法解决吗?

谢谢!

最佳答案

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")


在目标上设置的标志将应用于目标内的所有源。

关于cmake - 不同目标中同一文件的不同编译标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6665887/

相关文章:

cmake - 我真的需要指定 install-interface includes dependencies 吗?

c++ - 使用 Cmake 和 Visual Studio 2013 Unresolved external 问题

linux - glfw makefile 在 Ubuntu 上出现 "generating html documentation"时失败

c - CMAKE 资源文件中 WINAPI 的对话框资源返回语法错误

c++ - CLion 无法解析类型 std::unordered_map,即使它提示我包含 header 并且编译工作正常

C++ 模块 TS 和 CMake

c++ - ffmpeg:对 'uncompress' 的 undefined reference

c++ - 如何使用 CMake 有选择地链接静态或动态 boost 库?

c++ - 如何编写真正跨平台的 C++ 分发库

使用 CMake 进行 Boost 测试 - 未定义的 main