如何在Microsoft C++;构建工具 我用微软C++编译器和构建工具编译一个库。我的构建环境设置编译标志/GL,但是对于特定的库,我需要关闭该标志。我可以使用/GL-,但是我得到一个警告D9025,它只是告诉我我正在覆盖以前的设置。 我想取消这个警告。但是命令行选项/wd仅用于Cxxx错误和警告,而不是Dxxx警告。如何抑制D9025警告?

如何在Microsoft C++;构建工具 我用微软C++编译器和构建工具编译一个库。我的构建环境设置编译标志/GL,但是对于特定的库,我需要关闭该标志。我可以使用/GL-,但是我得到一个警告D9025,它只是告诉我我正在覆盖以前的设置。 我想取消这个警告。但是命令行选项/wd仅用于Cxxx错误和警告,而不是Dxxx警告。如何抑制D9025警告?,c++,visual-studio,msbuild,suppress-warnings,C++,Visual Studio,Msbuild,Suppress Warnings,您无法抑制D9025,必须修复该问题。表示在cl.exe命令行上有冲突的选项。在您的案例中,您有如下内容: cl ... /GL ... /GL- ... <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> ... <WholeProgramOptimization>false</WholeProgramOptimiz

您无法抑制D9025,必须修复该问题。表示在cl.exe命令行上有冲突的选项。在您的案例中,您有如下内容:

cl ... /GL ... /GL- ...
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
  ...
  <WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
编译器实际上使用命令行最后指定的选项,但该命令行非常混乱

在.vcxproj文件中,确保为WholeProgramOptimization属性设置了正确的选项。您的配置部分可能如下所示:

cl ... /GL ... /GL- ...
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
  ...
  <WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>

...
假的

这有点老了,但万一其他人经历了这一点并在这里着陆

很难说这个用户到底发生了什么,但在Visual Studio中,这个问题可能会出现在以下情况中:

右键单击:

  • 有问题的项目=>properties
  • 配置属性=>C/C++=>命令行
举例来说:

  • 如果查看“所有选项”,可能会有此选项:/MT
  • 在底部的“附加选项”框中,它可能有:/MD
这些都是相互冲突的,因此发出了警告

要修复它,请删除附加选项中的/MD

然后浏览到:配置属性=>C/C++=>代码生成

将运行库设置为:/MD

同样,这只是发生这种情况的一种情况,但如果用户使用makefile(将RuntimeLibrary设置为一个值,然后使用AdditionOptions将其设置为有争议的值),则可能会发生类似的情况


顺便说一句,这只是一个警告,它最终使用了AdditionOptions中指定的值。

从库的生成设置中删除冲突标志。我尝试将选项更改为使用破折号而不是斜杠(以尽量减少MSVC特定代码的数量),D9025警告仅在使用破折号时显示。我认为实际上没有相互矛盾的论点。MSVC说它支持破折号,所以我认为这是一个错误,是一个错误警告,我想保持沉默。