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

标签 c++ visual-c++ libraries suppress-warnings

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

  • 在GCC中:
    #pragma GCC system_header
    #include“real_3rd_party_header.h”
  • 还有GCC -isystem选项,可用于指定目录
    压制
    How to eliminate external lib/third party warnings in GCC
    我希望MSVC有这样的东西。
  • 和#pragma推送MSVC中的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一起使用。他们没有办法只保留那里的警告而忘记它们。我正要付钱解决这个问题。使此功能生效可能是重用第三方库和自己重写代码之间的决定性因素。

    最佳答案

    所有这些都来自此博客文章: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修饰符后面请求支持此功能。

    关于c++ - 如何在MSVC中禁止所有第三方编译时间警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63791312/

    相关文章:

    c++ - 标记算术表达式?

    c++ - mkl cblas_dgemm 参数错误

    c++ - 如何根据命中的另一个断点添加条件中断?视觉C++

    c - 如何将一个库的全局变量使用到另一库

    repository - 使用 GitLab API 获取存储库语言

    C++ XLST 转换无法使用 MSXML 3.0

    c++ - 如何使用 Makefile 变量作为文件包含在 g++ 命令中?

    c++ - 我的整个解析逻辑因为空字符而受到影响如何解决这个问题

    c++ - 在 Visual C++ 中,出现警告但程序没有继续运行,有什么办法可以忽略它吗?

    c++ - 交叉编译时如何处理依赖关系