当前位置: 首页 > 知识库问答 >
问题:

如何抑制 MSVC 中的所有第三方编译时警告

微生季
2023-03-14

我正在开发一个使用OpenCV和加速的C项目。不幸的是,在编译时,我的编译器从这些库的包含文件中给了我数百个警告。即使有一个空的主函数,没有其他代码,我仍然从包含语句中得到这些警告。我听说这是Qt等其他第三方库的问题。所有伟大的图书馆。如何抑制 MSVC 中的所有第三方警告。

我知道这些解决方案:

  • 在GCC中:#pragma GCC system_header#include“real_3rd_party_header.h”
  • 还有GCC-isystem选项,它允许您指定目录以禁止显示如何在GCC中消除外部lib/第三方警告,我希望MSVC也能这样做
  • 还有MSVC中的#pragma push pop宏,但这只适用于您自己的代码。https://docs.microsoft.com/en-us/cpp/preprocessor/warning?view=vs-2019年
  • 还有新的VS2017解决方案https://devblogs.microsoft.com/cppblog/broken-warnings-theory/

我已经花了几个小时在这最后两个解决方案上,但没有任何成功。无论如何,“破碎警告理论”博客并没有解释如何很好地应用它的解决方案。

我正在使用:

  • Visual Studio 2015和2019。
  • 增压1.72
  • 开放CV4

我真的很感谢任何愿意和我一起解决这个问题的人。很高兴知道谁甚至解决了这个问题。许多公司使用这些库,有些可能带有 MSVC。他们不可能只是坚持那里的警告而忘记它们。我即将付钱解决这个问题。让它工作可能是重用第三方库和自己重写代码之间的决定性因素。

共有1个答案

武功
2023-03-14

所有这些都来自这篇博客文章:https://devblogs.microsoft.com/cppblog/broken-warnings-theory/.这篇文章介绍的总体基调充分说明了为什么这个选项一开始就不存在(对我来说没有什么意义)。

基本上,这表明您可以使用/外部:I作为-issystem的同义词。由于MSVC处理模板警告的方式,您可能还需要/外部:templates-

不幸的是,我在MSVC命令行文档中找不到任何对此的引用,也没有与上述VS2017 15.6相关的发行说明,因此您的里程可能会有所不同。但是,在系统修饰符后面存在一个 CMake 问题,要求支持此功能。

 类似资料:
  • 在我的应用程序中,我有一个由第三方开发的库,不幸的是,它包含相当多的lint和javac警告。我想忽略这两种类型的警告,因为它们无法由我们的团队修复,并且它们会污染我们的构建日志。我尝试将以下内容添加到库build.gradle文件中: 在Android块中 我还在build.gradle文件末尾添加了以下内容: 不幸的是,每当“:compileDebugJavaWithJavac”运行时,它仍然

  • 问题内容: 我们总是被教导要确保在switch语句中使用 break 来避免掉线。 Java编译器会针对这些情况发出警告,以帮助我们避免犯小错误(而是严重错误)。 但是,我将案例检查作为功能使用(我们不必在这里进行介绍,但是它提供了一种非常优雅的解决方案)。 但是,编译器会吐出大量警告,这些警告可能会掩盖我需要了解的警告。我知道如何更改编译器以忽略所有掉线警告,但是我想在逐个方法的基础上实施此操作

  • 我目前正在尝试设置一个项目,该项目将使用Visual Studio 2019的新CMake功能(特别是将Clang和Ninja与CMake和VS2019结合使用),使用多个编译器(包括Clang、MSVC和GCC)。 我正在使用CMake将项目配置为“与编译器无关”,这样我就不需要编辑代码本身来通过预处理器指令或指令处理不同的编译器。 此项目需要配置为具有高警告级别(MSVC的,Clang的 -W

  • 问题内容: 每次我都会收到警告: 抑制它的最佳方法是什么?所有软件包都是最新的。 Conf: OSX带有Brew Python 2.7.10(默认,2015年7月13日,12:05:58),pandas == 0.17.0和matplotlib == 1.5.0 问题答案: 您可以禁止所有警告:

  • 我应该启用哪些确切的gcc标志来获得此警告? 为什么将声明为volatile会抑制该警告?

  • 我最近开始尝试llvm的< code>clang-tidy工具。现在我正试图抑制来自第三方库代码的错误警告。为此,我想使用命令行选项