c++ - 如何在Visual Studio 2019中更改%(DisableSpecificWarnings)

标签 c++ visual-studio visual-studio-2019

升级到VS 2019之后,我试图通过禁用一些我不在乎的内容来使C++警告再次有用,例如C26812

我知道我可以转到每个项目的属性页,并将此字符串添加到“禁用特定警告”中,但这会重复很多(我有很多项目)。因此,我改为尝试更改所有项目共有的DisableSpecificWarnings变量:4996; 6031;%(DisableSpecificWarnings)

如何在Visual Studio 2019中以及在何处更改此全局变量?

最佳答案

项目默认值来自多个.props文件,这些文件按范围,语言和平台进行组织。这些.props文件的位置(甚至存在)在版本之间已更改,并且可能取决于VS 2019之前安装的过去版本的历史记录。

标识实际使用的默认.props的一种(更安全的)方法是创建一个新的C++项目并查看生成的<Import Project ... />文件中的.vcxproj行。例如,我在机器上获得以下信息的顺序是递增的。

<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

最后一个应该是最具体的,它包含每个用户每个平台的设置。它似乎不再是通过全新的VS 2019安装创建的,但它是从以前的版本继承的,并且在存在时仍会被识别(例如,请参阅Microsoft.Cpp.Win32.user.props file missing)。

要查看"$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"扩展到的内容,请打开项目设置并假装更改配置中的任何可编辑路径,然后在下拉菜单中单击Edit,然后将.props路径粘贴到编辑框中。实际路径将显示在其正下方,例如C:\Users\<user name>\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props

在磁盘上找到文件,或者如果尚不存在则创建它,然后在Project/ItemDefinitionGroup/ClCompile下插入以下内容。
      <DisableSpecificWarnings>26812;%(DisableSpecificWarnings)</DisableSpecificWarnings>

如果.props文件不存在,而您必须从头开始创建它,则完整文件为:
<?xml version="1.0" encoding="utf-8"?> 
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemDefinitionGroup>
    <ClCompile>
      <DisableSpecificWarnings>26812;%(DisableSpecificWarnings)</DisableSpecificWarnings>
    </ClCompile>
  </ItemDefinitionGroup>
</Project>

为了修改每台计算机的默认值,而不是每用户的默认值,请遵循相同的步骤,但改用$(VCTargets)文件之一。

关于c++ - 如何在Visual Studio 2019中更改%(DisableSpecificWarnings),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62210177/

相关文章:

.net - 在添加引用时调用 COM 组件返回了错误 HRESULT E_FAIL

c# - 运行时浮点计算与评估计算

c++ - 在模板函数中自动将指针/迭代器转换为 const

c++ - 我怎样才能增加概率?

c++ - 在不同配置之间共享 .obj 文件

c# - 在 Visual Studio 2019 中更改 C# 版本

visual-c++ - 枚举类的默认值总是0吗?

C++ 字符串数组二分查找

c++ - 通过函数指针调用函数 - 是否取消引用指针?有什么不同?

visual-studio - Visual Studio 2010 : Use hardware graphics acceleration if available