【问题标题】:How to suppress D9025 warning in Microsoft C++ build tools如何在 Microsoft C++ 构建工具中抑制 D9025 警告
【发布时间】:2021-08-06 15:46:08
【问题描述】:

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

【问题讨论】:

  • 从库的构建设置中删除冲突标志。

标签: c++ visual-studio msbuild suppress-warnings


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 我尝试将我的选项更改为使用破折号而不是斜杠(以尽量减少 MSVC 特定代码的数量),并且 D9025 警告仅在使用破折号时出现。我认为实际上并没有相互矛盾的论点。 MSVC 说它支持破折号,所以我认为这是一个错误和错误警告,我想保持沉默。
【解决方案2】:

这有点老了,但万一其他人经历过这个并登陆这里......

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

右击:

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

举例:

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

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

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

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

将运行时库设置为:/MD

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

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

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 2011-03-18
    • 1970-01-01
    相关资源
    最近更新 更多