c++ - 如何在 MSVC 中抑制所有 3rd 方编译时警告
问题描述
我正在开发一个使用 OpenCV 和 Boost 的 C++ 项目。不幸的是,在编译时,我的编译器从这些库的包含文件中给了我数百条警告。即使有一个空的 main 函数并且没有其他代码,我仍然会从 include 语句中收到这些警告。我听说这是 Qt 等其他 3rd 方库的问题。所有伟大的图书馆。如何抑制 MSVC 中的所有 3rd 方警告。
我知道这些解决方案:
- 在 GCC 中:#pragma GCC system_header #include "real_3rd_party_header.h"
- 还有 GCC -isystem 选项,它允许您指定目录来抑制 如何消除 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
- 开放CV4
我非常感谢愿意帮助我解决这个问题的任何人。很高兴知道谁甚至解决了这个问题。如此多的公司使用这些库,其中一些可能使用 MSVC。他们不可能只是遵守那里的警告而忘记它们。我已经到了付钱解决这个问题的地步。让它工作可能是重用 3rd 方库和自己重写代码之间的决定因素。
解决方案
所有这些都来自这篇博文:https ://devblogs.microsoft.com/cppblog/broken-warnings-theory/ 。文章介绍的总体基调充分说明了为什么一开始就没有这个选项(而且对我来说没有任何意义)。
基本上,这表示您可以将/external:I
其用作-isystem
. /external:templates-
由于 MSVC 处理来自模板的警告的方式,您可能也需要。
不幸的是,我在MSVC 命令行文档中找不到对此的任何引用,也找不到与提到的 VS2017 15.6 相关的发行说明,因此您的里程可能会有所不同。但是,在其修饰符后面有一个 CMake 问题要求支持此功能。SYSTEM
推荐阅读
- azure - 如何向使用 azure 函数登录的特定用户发送信号 r 消息?
- javascript - 反应表单未在浏览器中显示
- python - 如何使用 python (pyGithub) 获取 github pull request 所有审阅者
- ios - 如何在第一节iOS中显示标题文本的标题
- python - Python/Selenium:在 Xpath 中插入一个迭代器
- python - 如何使用熊猫比较两列?
- asp.net - 如何修复 checkmarx 扫描反射 XSS 特定客户端
- javascript - 如何为计时器制作重置按钮?
- python-3.x - 第 10 章 Python 速成课程文件路径示例中的文件路径
- interactive-brokers - 盈透证券,如何从注册 API 获取消费者密钥?