Visual c++ cmake删除以前添加的目标编译选项
我有一个cmake项目,它是某个更大环境的一部分 我必须使用一些cmake makros/功能来设置我的项目 在某些情况下,它们会添加一个编译标志:Visual c++ cmake删除以前添加的目标编译选项,visual-c++,cmake,Visual C++,Cmake,我有一个cmake项目,它是某个更大环境的一部分 我必须使用一些cmake makros/功能来设置我的项目 在某些情况下,它们会添加一个编译标志: TARGET_COMPILE_OPTIONS (${name} PUBLIC "$<$<CONFIG:Release>:/GL>") 在部分。 因此,添加/GL标志似乎会触发一些无法在以后删除的内部状态更改。(如果在我必须调用的宏中删除该标志的添加,则不会将WholeProgramOptimization节点添加到vcxp
TARGET_COMPILE_OPTIONS (${name} PUBLIC "$<$<CONFIG:Release>:/GL>")
在
部分。因此,添加
/GL
标志似乎会触发一些无法在以后删除的内部状态更改。(如果在我必须调用的宏中删除该标志的添加,则不会将WholeProgramOptimization
节点添加到vcxproj)
我错过什么了吗
我可以添加一个/GL-
作为一个选项,但是我会得到很多D9025
警告(用/GL-覆盖/GL)
(使用cmake 3.15和3.13进行测试)事实证明,问题在于我必须使用的cmake脚本将优化器设置设置为
PUBLIC
范围
TARGET_COMPILE_OPTIONS (${name} PUBLIC "$<$<CONFIG:Release>:/GL>")`
^^^^^^
TARGET\u COMPILE\u选项(${name}PUBLIC“$”)`
^^^^^^
我的项目的另一个依赖项使用相同的函数,并将此标志放入其接口\u COMPILE\u OPTIONS
中,我的项目将继承此选项,而不可能将其删除
唯一的方法似乎是将公共脚本修复为使用PRIVATE
作用域。这将更符合逻辑,因为它是一个内部目标属性,对使用者没有任何影响。请提供更多代码。这将是很高兴看到哪个复制您的问题。
TARGET_COMPILE_OPTIONS (${name} PUBLIC "$<$<CONFIG:Release>:/GL>")`
^^^^^^