【问题标题】:Disable -Wall compiler warnings in a Qt project?在 Qt 项目中禁用 -Wall 编译器警告?
【发布时间】:2013-09-06 22:06:58
【问题描述】:

我正在编译一个第 3 方库,并不关心修复库中存在的警告,但我不希望它们污染 Qt Creator 中的 问题 窗格。

我已尝试遵循建议 here,但在启用 -Wall 后没有编译器标志可禁用它,例如使用 -Wno-enum-compare

阅读this 后,我尝试像这样删除标志:

CFLAGS -= -Wall

但这也没有用。所以我尝试了this advice

QMAKE_CXXFLAGS_WARN_OFF -= -Wall

还是什么都没有。

于是我查看了生成的Makefile,发现了这个:

CFLAGS        = -pipe -g -fPIC -Wall -W -D_REENTRANT $(DEFINES)
CXXFLAGS      = -pipe -g -fPIC -Wall -W -D_REENTRANT $(DEFINES)

所以我尝试从这两个变量中删除标志:

CFLAGS -= -Wall
CXXFLAGS -= -Wall

还是什么都没有。你应该如何删除这个编译器标志?!

【问题讨论】:

    标签: c++ qt warnings qmake compiler-flags


    【解决方案1】:

    最简单的解决方案是:

    CONFIG += warn_off
    

    感谢 cmets 中的 peppe。

    说明

    -Wall 标志被这两个变量插入到Makefile

    QMAKE_CFLAGS_WARN_ON
    QMAKE_CXXFLAGS_WARN_ON
    

    所以要删除-Wall,您需要将其从两个这些变量中删除。

    QMAKE_CFLAGS_WARN_ON -= -Wall
    QMAKE_CXXFLAGS_WARN_ON -= -Wall
    

    warn_off 就是这样做的。

    【讨论】:

    • 非hackish的方式可能是CONFIG += warn_off。作为调试“这个变量/选项/...来自哪里?”的一般方式,您可以运行qmake -dqmake -d -d等;这会给你很多有用的线索。
    • @peppe 太棒了-谢谢。我完全没有意识到这一点!
    【解决方案2】:

    正如评论中还提到的“peppe”,根据以下文档,Qt'ish 方式是这样的:CONFIG += warn_off/on

    warn_on:编译器应该输出尽可能多的警告。如果指定了 warn_off,则将忽略它。

    warn_off: 编译器应该输出尽可能少的警告。

    CONFIG 文档可以在here 中找到。

    QMAKE_CXXFLAGS_WARN_OFF/ON 变量不需要显式设置,因为它们由 qmake 处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多