【问题标题】:How to specify -W4 (Visual Studio) in a Qt project?如何在 Qt 项目中指定 -W4 (Visual Studio)?
【发布时间】:2019-01-23 11:15:55
【问题描述】:

我的环境:

  • Windows 10,64 位
  • Microsoft Visual Studio 2015
  • Qt 5.6.2
  • Qt Creator 4.8.1

我想用-W4 而不是默认的-W3 编译我的C++ 项目,所以我将这一行添加到我的.pro 文件中:

QMAKE_CXXFLAGS += -W4

但是,我收到了很多这样的警告(我想每个编译单元一个):

cl : Command line warning D9025 : overriding '/W4' with '/W3'

从命令行,我可以看到命令行确实包含-W3-W4(按此顺序)。

所以,我的问题是:如何交换-W3-W4 的顺序(所以-W4 将优先于-W3)?

注意这不起作用:我尝试修改Qt的配置文件C:\Qt\5.6.2\msvc2015_64\mkspecs\common\msvc-desktop.conf,将变量QMAKE_CFLAGS_WARN_ON的值从-W3更改为-W4,而不是添加@ 987654336@ 到 QMAKE_CXXFLAGS 在我的 .pro 文件中,但这会导致库生成许多(数千)警告。我还尝试在我的.pro 文件中将-W4 附加到QMAKE_CXXFLAGS_WARN_ON(而不是QMAKE_CXXFLAGS),结果相同(来自图书馆的数千条警告)。

还要注意,如果我将-Wall(而不是-W4)添加到QMAKE_CXXFLAGS,那么:

  • 我没有收到类似的命令行警告(尽管-Wall 是 后跟-W3 在命令行)
  • 我仍然收到许多来自库的警告,但远少于 在msvc-desktop.conf 中将-W3 更改为-W4(或将-W4 附加到 QMAKE_CXXFLAGS_WARN_ON 在我的.pro 文件中)。

我使用 qmake(通过 Qt Creator),因此任何需要编辑生成的 Visual Studio 项目文件的解决方案都是不可接受的。

【问题讨论】:

  • 我现在无法访问 Visual Studio,所以这可能不完全正确,但您可以通过右键单击您的项目来编辑警告级别 -> 属性->c/c++->更改警告级别
  • 但这导致库生成了许多(数千个)警告 - 对我来说似乎是预期的结果
  • @Lorand 我的帖子现在解释了为什么这是不可接受的。
  • @VTT 请参阅我帖子的更新版本中提到的-Wall
  • How can I swap the order of -W3 and -W4 (so -W4 would take precedence over -W3)? QMAKE_CFLAGS_WARN_ON = -W4 $$QMAKE_CFLAGS_WARN_ON

标签: c++ visual-studio qt qmake


【解决方案1】:

对项目文件的更改追加警告设置到现有变量,这是预定义的:

QMAKE_CXXFLAGS += -W4

您可以在变量前添加变量,也可以在 replace the existing warning variable setting 前添加您自己的变量:

QMAKE_CXXFLAGS ~= s/-W3/-W4

【讨论】:

  • 正如我在帖子中所写,-W4(我附加到QMAKE_CXXFLAGS)在命令行上被-W3 覆盖(显然来自QMAKE_CFLAGS_WARN_ON,它设置在msvc-desktop.conf)。并且将-W3 替换为-W4 没有任何效果(QMAKE_CXXFLAGS 最初可能为空)。
  • 在您的第二个建议中将QMAKE_CXXFLAGS 替换为QMAKE_CXXFLAGS_WARN_ON,如下所示:QMAKE_CXXFLAGS_WARN_ON ~= s/-W3/-W4,似乎解决了我所有的问题。谢谢!
  • @user1387866 很高兴听到这个消息!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-29
  • 2010-11-22
  • 1970-01-01
  • 2011-06-05
  • 1970-01-01
  • 2014-09-13
  • 1970-01-01
相关资源
最近更新 更多