我正在使用OpenCV和Boost的C++项目中工作。不幸的是,在编译时,我的编译器从那些库的包含文件中给我数百警告。即使主函数为空且没有其他代码,我仍然可以从include语句中获得这些警告。我听说这是Qt等其他第三方库的问题。所有优秀的图书馆。如何在MSVC中禁止所有第三者警告。
我知道以下解决方案:
#pragma GCC system_header
#include“real_3rd_party_header.h”
压制
How to eliminate external lib/third party warnings in GCC
我希望MSVC有这样的东西。
自己的代码。
https://docs.microsoft.com/en-us/cpp/preprocessor/warning?view=vs-2019
https://devblogs.microsoft.com/cppblog/broken-warnings-theory/
我在最后两个解决方案上花了几个小时,但没有成功。无论如何,“警告预警理论”博客并没有解释如何很好地应用其解决方案。
我正在使用:
我非常感谢任何愿意与我一起解决此问题的人。很高兴知道谁甚至解决了这个问题。这么多公司使用这些库,有些可能与MSVC一起使用。他们没有办法只保留那里的警告而忘记它们。我正要付钱解决这个问题。使此功能生效可能是重用第三方库和自己重写代码之间的决定性因素。
最佳答案
所有这些都来自此博客文章:https://devblogs.microsoft.com/cppblog/broken-warnings-theory/。
本文引言的一般语调充分说明了为什么不首先使用此选项(对我而言,这都没有多大意义)。
基本上,这表示您可以将/external:I
用作-isystem
的同义词。
由于MSVC处理模板警告的方式,您可能还需要/external:templates-
。
不幸的是,我在the MSVC commandline documentation或the release notes related to the mentioned VS2017 15.6中都找不到对此的任何引用,因此您的里程可能会有所不同。
但是,a CMake issue在其SYSTEM
修饰符后面请求支持此功能。
关于c++ - 如何在MSVC中禁止所有第三方编译时间警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63791312/