Qmake:如何在不更改qmake.conf的情况下删除某个项目的编译器标志?

时间:2011-11-23 11:40:13

标签: c++ qt qmake compiler-options

我正在使用qmake和Visual Studio。在发布版本中,qmake将/ GL和/ O2标志添加到所有项目中,我需要为整个Qt项目中的某些库删除这两个标志。有办法吗?

7 个答案:

答案 0 :(得分:9)

我遇到了类似的问题,我通过在.pro文件中添加以下指令解决了这个问题:

QMAKE_CXXFLAGS_RELEASE - = -g

观察_RELEASE后缀,否则无效。

答案 1 :(得分:5)

我使用这个编辑了我的.pro文件,它运行了!

QMAKE_CXXFLAGS_RELEASE  -= -Zc:strictStrings
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO -= -Zc:strictStrings

不起作用:

QMAKE_CFLAGS_RELEASE -= -Zc:strictStrings
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO -= -Zc:strictStrings

您可以尝试:

QMAKE_CXXFLAGS_RELEASE  -= -GL -O2
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO -= -GL -O2

看看:

你的Qt dir \ compiler \ mkspecs \ win32-msvc2013 \ qmake.conf

答案 2 :(得分:3)

唯一可行的方法是

QMAKE_CFLAGS -= /GL /O2

但我怀疑这适用于QMAKE_CFLAGS

或者,您可以重新定义QMAKE_CFLAGS,忘记其先前的值:

QMAKE_CFLAGS = $$CFLAGS_WITHOUT_GL_O2

答案 3 :(得分:1)

您可以编辑配置使用的qmakespec。

找到它的最简单方法是打开

%QTDIR%\mkspecs\%QMAKESPEC%

假设设置了环境变量(它们应该是)

万一它不起作用,它会像C:\Qt\4.x.x\mkspecs\win32-msvc2010

在qmake.conf文件中,您可以调整两行(它们位于文件的不同位置)

QMAKE_CFLAGS_RELEASE    = -O2 -MT
QMAKE_CFLAGS_LTCG       = -GL

QMAKE_CFLAGS_RELEASE    = -MT
QMAKE_CFLAGS_LTCG       =

但请注意,您必须为您正在使用的每个Qt版本执行此操作(以及您将要执行的每个更新)。

[编辑]
如果您想为某些项目选择-O2 -GL选项,则必须添加

QMAKE_CFLAGS_RELEASE    += -O2
QMAKE_CFLAGS_LTCG       += -GL

到需要这些选项的项目的.pro文件。

取决于使用它的项目数量和不使用它的项目数量,这种方法或重新定义QMAKE_CFLAGS将更方便。

答案 4 :(得分:1)

如果-=不起作用

尝试输入.pro文件

QMAKE_CFLAGS = $$replace(QMAKE_CFLAGS, "-GL ", "")
QMAKE_CFLAGS = $$replace(QMAKE_CFLAGS, "-O2 ", "")

答案 5 :(得分:0)

最近我遇到了同样的问题。我必须删除Zc:strictStrings编译器标志。我立即了解到,仅删除是行不通的。因此,解决方案是通过将该字符串包含到.pro文件

中来覆盖该标志

QMAKE_CXXFLAGS+=-Zc:strictStrings-

像这样,编译器会打印警告:cl:命令行警告D9025:将'/ Zc:strictStrings'替换为'/ Zc:strictStrings-',但仍然可以完成工作。

答案 6 :(得分:-1)

对我有用的是:

QMAKE_CXXFLAGS -= -Zc:strictStrings