CMake:如何清除目标编译选项
CMake: how to clear target compile options
在我的项目中,我使用全局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}")
现在 - 如果变量为空EXTLIB_COMPILE_FLAGS
- 你最终会有一个空字符串,而不是"缺少的参数"。
相关文章:
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- C++A*算法并不总是在路径中具有目标节点
- 基于树莓pi的tensorflow lite量化ssd目标检测
- 为测试目标创建具有不同源文件夹的文件
- 清除前检查矢量
- 使用源向量作为目标
- 是否可以用C++/WinRT将windows 10.0.14393作为目标
- 在 CMake 中为每个目标设置编译器/链接器标志
- ifstream文件在从行中读取时被清除
- qmake:检测目标位宽(32 位或 64 位)
- 如何在 CMake 中对目标依赖项进行分组?
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- WINAPI 注册应用程序重新启动时不清除打开的套接字
- 如何为包含头文件的目标编写生成文件?
- 线性优化目标函数中的绝对值
- 如何清除/清空已打开的文件C++
- 制作文件:没有规则来制定目标:如何设置正确的规则?
- 字符串函数在目标C++上运行时C++返回空
- 如何定义自定义生成配置类型,其中通常是.exe的目标改为 DLL
- CMake:如何清除目标编译选项