5

我们使用 VS 2008 Professional 和 Qt Visual Studio Add-In 来开发 Qt 4.8.4 应用程序。我想将警告级别设置为 4(所有警告),但仅限于我们自己的代码。如果我在项目属性下设置警告级别 >= 2,我会从 Qt 头文件 we 中收到数百个警告#include

不幸的是,似乎 VS 没有与 gcc 的 -isystem 选项等效的选项。我曾尝试在 Qt#include之间封闭#pragma warning(push, 0)#pragma warning(pop)但成功有限。自动生成的 moc_*.cpp 文件仍然会导致有关 Qt 头文件中代码的警告。这也相当麻烦。

你知道实现这一目标的任何其他方法吗?我发现很难相信所有 Qt/MSVC 用户在构建后都会将他们的警告静音或浏览数百个不相关的警告。

4

2 回答 2

1

我们将 #include 块包装在 pragma 中以禁用警告。除此之外,我们只能希望 MS 有一天会实施 isystem。 https://visualstudio.uservoice.com/forums/121579-visual-studio-2015/suggestions/14717934-add-a-cl-exe-option-for-system-headers-like-gcc-s

于 2016-06-24T14:45:39.567 回答
0

我发现只有一种方法可以做到这一点:触摸几乎每个 Qt 头文件并在正确的位置包含#pragma warning(push, 0)和。#pragma warning(pop)我尝试过一次,但在下一个 Qt 版本发布时放弃了。

减少警告的另一种可能性是在正确的 qmake.conf 文件中禁用特定警告(例如,在 mkspecs\win32-msvc2010 中)。

我已更改此文件中的一些行:

QMAKE_CFLAGS_WARN_ON    = -W4 -w34100 -w34189 -wd4127 -wd4512
QMAKE_CFLAGS_RELEASE    = -Ox -MD
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -Ox -MD -Zi
QMAKE_CXXFLAGS_WARN_ON  = $$QMAKE_CFLAGS_WARN_ON
于 2013-06-07T09:40:04.877 回答