小编Iva*_*kov的帖子

CMake:如何清除目标编译选项

在我的项目中,我定义了一些CMAKE_CXX_FLAGS全局使用的通用编译选项。add_compile_options()在我的主 CMakeLists 文件中使用指定的其他一些选项,通常情况下应该应用于所有目标。

例如,我希望将标志-Wconversion应用于所有目标。但是我有一个外部库,在启用此选项的情况下会产生许多警告。所以我只想为这个特定的库禁用选项:

get_target_property(EXTLIB_COMPILE_FLAGS ext_lib COMPILE_OPTIONS )
list(REMOVE_ITEM EXTLIB_COMPILE_FLAGS -Wconversion)
set_target_properties(ext_lib PROPERTIES COMPILE_OPTIONS ${EXTLIB_COMPILE_FLAGS } )
Run Code Online (Sandbox Code Playgroud)

但现在只-Wconversion使用add_compile_options(). 并且目标没有任何自己的附加标志。因此,从列表中删除唯一条目后,我将得到一个空列表。调用 set_target_properties() 失败并出现错误:

set_target_properties 调用的参数数量不正确。

有什么方法可以完全清除某些目标属性?我正在使用 CMake 3.11

c++ gcc cmake

4
推荐指数
1
解决办法
3313
查看次数

标签 统计

c++ ×1

cmake ×1

gcc ×1