【发布时间】:2018-11-03 21:23:43
【问题描述】:
在我的项目中,我在全局范围内使用CMAKE_CXX_FLAGS 定义了一些通用编译选项。在我的主 CMakeLists 文件中使用 add_compile_options() 指定了一些其他选项,在常见情况下应该应用于所有目标。
例如,我希望将标志 -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 } )
但现在只有-Wconversion 是使用add_compile_options() 设置的。
并且目标没有任何自己的附加标志。因此,从列表中删除唯一条目后,我将得到一个空列表。调用 set_target_properties() 失败并出现错误:
使用错误数量的参数调用 set_target_properties。
有什么方法可以彻底清除一些目标属性吗? 我正在使用 CMake 3.11
【问题讨论】:
-
只是添加引号?
set_target_properties(ext_lib PROPERTIES COMPILE_OPTIONS "${EXTLIB_COMPILE_FLAGS}")