在CMake中使用本地编译器标志

时间:2017-04-16 19:34:04

标签: cmake

我有一个CMakeLists.txt可以导入几个静态库,如下所示:

add_subdirectory("/foo/bar" "/bar/foo")
add_subdirectory("/foo2/bar" "/bar2/foo")

在我的主CMakeLists.txt中,我设置CMAKE_C_FLAGS,如下所示:

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ...my flags...")

我使用add_subdirectory导入的所有静态库似乎现在也继承了这些标志,但我不希望这样!有没有办法在本地设置编译器标志,即只针对相应CMakeLists.txt文件中的源文件而不是整个项目?

2 个答案:

答案 0 :(得分:1)

命令add_compile_options仅为当前CMakeLists.txt(和子目录)中的目标设置编译器标志:

<强>的CMakeLists.txt

add_subdirectory("foo/bar" "/bar/foo")
add_executable(main_exe ...) # Unaffected by 'add_compile_options' below.

<强>富/酒吧/的CMakeLists.txt

# set flags for futher targets in current CMakeLists.txt
add_compile_options(<my_flags>)
add_executable(sub_exe ...) # Affected by 'add_compile_options' above.

答案 1 :(得分:0)

当前版本的CMake建议使用特定于目标的命令,例如 target_include_directories target_compile_options target_compile_definitions 。这些命令仅影响指定的目标(可能还会影响目标的后代用户)。

有关详细信息,请参阅CMake-commands doc