我有一个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
文件中的源文件而不是整个项目?
答案 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。