Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual c++ cmake删除以前添加的目标编译选项_Visual C++_Cmake - Fatal编程技术网

Visual c++ cmake删除以前添加的目标编译选项

Visual c++ cmake删除以前添加的目标编译选项,visual-c++,cmake,Visual C++,Cmake,我有一个cmake项目,它是某个更大环境的一部分 我必须使用一些cmake makros/功能来设置我的项目 在某些情况下,它们会添加一个编译标志: TARGET_COMPILE_OPTIONS (${name} PUBLIC "$<$<CONFIG:Release>:/GL>") 在部分。 因此,添加/GL标志似乎会触发一些无法在以后删除的内部状态更改。(如果在我必须调用的宏中删除该标志的添加,则不会将WholeProgramOptimization节点添加到vcxp

我有一个cmake项目,它是某个更大环境的一部分

我必须使用一些cmake makros/功能来设置我的项目

在某些情况下,它们会添加一个编译标志:

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>")`
                                ^^^^^^