gpt4 book ai didi

c++ - 如何在 CMake 中仅更改一个可执行文件的编译器标志?

转载 作者:可可西里 更新时间:2023-11-01 15:10:31 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com