首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CMake:如何清除目标编译选项

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

Stack Overflow用户
提问于 2018-05-24 15:20:23
回答 1查看 5.5K关注 0票数 6

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

例如,我希望将标志-Wconversion应用于所有目标。但是,我有一个外部库,它在启用此选项后生成多个警告。因此,我只想禁用这个特定库的选项:

代码语言:javascript
运行
复制
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()设置的。而target没有任何自己的附加标志。因此,在从列表中删除唯一的条目后,我将得到一个空列表。调用set_target_properties()失败时出错:

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

有没有办法彻底清除一些目标属性?我使用的是CMake 3.11

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-24 19:48:16

把我的评论变成回答

只需添加引号:

代码语言:javascript
运行
复制
set_target_properties(ext_lib PROPERTIES COMPILE_OPTIONS "${EXTLIB_COMPILE_FLAGS}")

现在--如果EXTLIB_COMPILE_FLAGS变量是空的--你就会得到一个空字符串,而不是一个“缺少的参数”。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50512905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档