如何在MSVC中禁止所有第三方编译时间警告

问题描述

我正在研究一个使用OpenCV和Boost的C ++项目。不幸的是,在编译时,我的编译器从那些库的包含文件中给我数百警告。即使主函数为空且没有其他代码,我仍然可以从include语句中获得这些警告。我听说这是Qt等其他第三方库的问题。所有优秀的图书馆。如何在MSVC中禁止所有第三方警告。

我知道这些解决方案:

我在最后两个解决方案上花费了数小时,但没有成功。无论如何,“警告预警理论”博客没有解释如何很好地应用其解决方案。

我正在使用:

  • Visual Studio 2015和2019。
  • 提升1.72
  • OpenCV4

我非常感谢任何愿意与我一起解决此问题的人。很高兴知道谁甚至解决了这个问题。这么多公司使用这些库,有些可能与MSVC一起使用。他们没有办法只保留那里的警告而忘记它们。我正要付钱解决这个问题。使此功能生效可能是重用第三方库和自己重写代码间的决定因素。

解决方法

所有这些都来自此博客文章:https://devblogs.microsoft.com/cppblog/broken-warnings-theory/。 本文引言的一般语调充分说明了为什么不首先使用此选项(对我来说,这都没有多大意义)。

基本上,这表示您可以将/external:I用作-isystem的同义词。 由于MSVC处理模板警告的方式,您可能还需要/external:templates-

很遗憾,我在the MSVC commandline documentationthe release notes related to the mentioned VS2017 15.6中都找不到任何引用,因此您的里程可能会有所不同。 不过,a CMake issue在其SYSTEM修饰符后面要求支持此功能。