你如何抑制 MSVC 中的所有第 3 方编译时警告
How do you suppress all 3rd party compile time warnings in MSVC
我正在开发一个使用 OpenCV 和 Boost 的 C++ 项目。不幸的是,在编译时,我的编译器从这些库的包含文件中给了我数百条警告。即使主函数为空且没有其他代码,我仍然会从 include 语句中收到这些警告。我听说这是其他第三方库(如 Qt)的问题。所有伟大的图书馆。我怎样才能抑制 MSVC 中的所有第 3 方警告。
我知道这些解决方案:
- 在海湾合作委员会中:
#pragma GCC system_header
#include “real_3rd_party_header.h”
- 还有让您指定目录的 GCC -isystem 选项
压制
How to eliminate external lib/third party warnings in GCC
我希望 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
- OpenCV4
非常感谢愿意帮助我解决此问题的任何人。很高兴知道谁解决了这个问题。许多公司使用这些库,有些可能使用 MSVC。他们不可能只遵守那里的警告而忘记它们。我正处于支付金钱以解决此问题的地步。让它工作可能是重用第 3 方库和自己重写代码之间的决定性因素。
所有这些都来自这个博客post:https://devblogs.microsoft.com/cppblog/broken-warnings-theory/。
文章介绍的一般基调充分说明了为什么这个选项一开始就不存在(none 对我来说很有意义)。
基本上这表示您可以使用 /external:I
作为 -isystem
的同义词。
由于 MSVC 处理来自模板的警告的方式,您可能还需要 /external:templates-
。
不幸的是,我在 the MSVC commandline documentation, nor the release notes related to the mentioned VS2017 15.6 中找不到任何关于此的参考资料,因此您的情况可能会有所不同。
但是,a CMake issue 在他们的 SYSTEM
修饰符后面请求支持此功能。
我正在开发一个使用 OpenCV 和 Boost 的 C++ 项目。不幸的是,在编译时,我的编译器从这些库的包含文件中给了我数百条警告。即使主函数为空且没有其他代码,我仍然会从 include 语句中收到这些警告。我听说这是其他第三方库(如 Qt)的问题。所有伟大的图书馆。我怎样才能抑制 MSVC 中的所有第 3 方警告。
我知道这些解决方案:
- 在海湾合作委员会中: #pragma GCC system_header #include “real_3rd_party_header.h”
- 还有让您指定目录的 GCC -isystem 选项 压制 How to eliminate external lib/third party warnings in GCC 我希望 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
- OpenCV4
非常感谢愿意帮助我解决此问题的任何人。很高兴知道谁解决了这个问题。许多公司使用这些库,有些可能使用 MSVC。他们不可能只遵守那里的警告而忘记它们。我正处于支付金钱以解决此问题的地步。让它工作可能是重用第 3 方库和自己重写代码之间的决定性因素。
所有这些都来自这个博客post:https://devblogs.microsoft.com/cppblog/broken-warnings-theory/。 文章介绍的一般基调充分说明了为什么这个选项一开始就不存在(none 对我来说很有意义)。
基本上这表示您可以使用 /external:I
作为 -isystem
的同义词。
由于 MSVC 处理来自模板的警告的方式,您可能还需要 /external:templates-
。
不幸的是,我在 the MSVC commandline documentation, nor the release notes related to the mentioned VS2017 15.6 中找不到任何关于此的参考资料,因此您的情况可能会有所不同。
但是,a CMake issue 在他们的 SYSTEM
修饰符后面请求支持此功能。