如何在Qt Creator中抑制警告

时间:2012-01-30 13:33:35

标签: linux qt g++ qt-creator compiler-warnings

我想知道是否可以在Qt-Creator中抑制编译器特定的警告。

我的g ++ - 4.5打印:

  

警告:条件表达式中的枚举和非枚举类型

我想摆脱它,因为它非常烦人。

  • Ubuntu 11.04 x64
  • 克++ - 4.5
  • QtCreator 2.01
  • Qt 4.7

谢谢!

5 个答案:

答案 0 :(得分:7)

你需要使用它:

  

QMAKE_CXXFLAGS + = -Wno-enum-compare

例如,如果您收到以 -Wenum-compare 结尾的警告。

另请注意,根据GCC文档,无法抑制某些警告 take a look at this for ones that you can't suppress,这样你就没有得到了 错误的想法,你的旗帜不能正常工作。

显然,知道标志是否被传递给编译器的最好方法是查看编译器输出,并确保你的标志在那里,你应该看到 -Wno-enum-compare ,即使该标志没有抑制任何内容。您会惊讶地发现有关此类信息的信息有多难,需要进行一些挖掘,我最终会在编辑.pro文件时从自动完成中找到它,如果您在编辑.pro文件时遇到问题,按 Ctrl + Space (或开始输入单词并点击 Shift + Home ),获取可在.pro文件中使用的有效内容列表,就像任何其他常见的源文件。它帮助我找到正确的东西( QMAKE_CXXFLAGS ,因为事实证明,通常不是人们建议的,出于某种原因)......哦是的,这是关于Qt版本4.8,创建者2.4,所以它可能已经改变,因为这篇文章(他们似乎喜欢这么做,我看到新版本已经发生了巨大的变化)。

答案 1 :(得分:2)

我查看了gcc警告选项。 Gcc有选项-Wenum-compare负责警告,但没有-Wno-enum-compare-Wenum-compare选项最有可能由-Wall设置,除非明确设置。所以我建议禁用-Wall

答案 2 :(得分:1)

linux-g++ {
    QMAKE_CXXFLAGS_WARN_ON = -Wall -Wextra -Wno-enum-compare
}

或任何使用g ++的系统

*-g++ {
    QMAKE_CXXFLAGS_WARN_ON = -Wall -Wextra -Wno-enum-compare
}

答案 3 :(得分:0)

您可能有两种选择:

  1. 修复警告本身(上面看起来你可能需要一个演员)
  2. 找到g ++发布的要删除的警告的名称,然后将它们添加到.pro文件中,并在前面加上“no-”将其添加到CFLAGS中。类似的东西:

    CFLAGS + = -Wno-my-super-warning-I-found

答案 4 :(得分:0)

对于一些代码:

QT_WARNING_PUSH
QT_WARNING_DISABLE_GCC("-Wenum-compare")

// Some code than throwns warnings

QT_WARNING_POP