7

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

4

2 回答 2

5

你不能抑制 D9025,你必须修复它。命令行警告 D9025表示您在 cl.exe 命令行上有冲突的选项。在你的情况下,你有这样的事情:

cl ... /GL ... /GL- ...

编译器实际上使用了在命令行中最后指定的选项,但该命令行非常混乱。

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

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
  ...
  <WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
于 2013-02-03T18:11:26.520 回答
1

这有点老了,但万一其他人经历过这个并降落在这里......

很难准确地说出这个用户发生了什么,但在 Visual Studio 中,这个问题可能出现在以下实例中:

右键单击:

  • 有问题的项目 => 属性
  • 配置属性 => C/C++ => 命令行

举例:

  • 如果您查看“所有选项”,可能会有这个选项:/MT
  • 在底部的“附加选项”框中,它可能有:/MD

这些是冲突的——因此发出警告。

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

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

将运行时库设置为:/MD

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

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

于 2019-11-26T18:21:40.237 回答