作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 CMake 项目,它通过 \MP
在 Visual Studio 中支持多处理器编译。旗帜。
由于只是项目构建的众多可执行文件之一,我需要设置 \MP
标记为 false(或禁用它,因为我在导入 .tlb
文件时遇到错误),如何为该目标设置不同的标记?
add_executable(MyProgram myprogram.cpp)
target_link_libraries(MyProgram MyLibraries)
我应该给一些set_target_properties
吗? cmake 或专门从整个项目中删除标志?谢谢!
最佳答案
您可以使用 set_source_files_properties添加COMPILE_FLAGS对于 myprogram.cpp。例如:
add_executable(MyProgram myprogram.cpp)
# Add the -std=c++11 flag as an example
set_source_files_properties( myprogram.cpp PROPERTIES COMPILE_FLAGS "-std=c++11" )
target_link_libraries(MyProgram MyLibraries)
如果您需要 MyProgram 目标中所有源文件的这些标志,您可以使用 set_target_properties具有目标属性 COMPILE_FLAGS :
add_executable(MyProgram myprogram.cpp)
# Add the -std=c++11 flag as an example
target_link_libraries(MyProgram MyLibraries)
set_target_properties( MyProgram PROPERTIES COMPILE_FLAGS "-std=c++11" )
更新:要删除单个属性,您可以先获取所有属性并从列表中手动删除有问题的标志。例如 get_source_file_property :
get_source_file_property( MYPROPS myprogram.cpp COMPILE_FLAGS )
STRING( REPLACE "/MP1" "" MYPROPS ${MYPROPS} )
set_source_files_properties( myprogram.cpp COMPILE_FLAGS ${MYPROPS} )
但是,我建议将您的源文件一分为二。一个包含所有带有\MP 标志的源文件,另一个仅包含 myprogram.cpp
关于c++ - 如何在 CMake 中仅更改一个可执行文件的编译器标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24238937/
我是一名优秀的程序员,十分优秀!