9

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

4

7 回答 7

10

我有一个类似的问题,我通过在 .pro 文件中添加以下指令来解决它:

QMAKE_CXXFLAGS_RELEASE -= -g

注意 _RELEASE 后缀,否则不起作用。

于 2013-03-18T17:01:42.973 回答
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 目录\compiler\mkspecs\win32-msvc2013\qmake.conf

于 2015-01-28T20:23:57.077 回答
3

唯一可行的方法是

QMAKE_CFLAGS -= /GL /O2

但我怀疑这是否适用QMAKE_CFLAGS

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

QMAKE_CFLAGS = $$CFLAGS_WITHOUT_GL_O2
于 2011-11-23T11:43:29.200 回答
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 会更方便。

于 2011-11-23T12:03:00.873 回答
1

如果-=不起作用

试试你的 .pro 文件

QMAKE_CFLAGS = $$replace(QMAKE_CFLAGS, "-GL ", "")
QMAKE_CFLAGS = $$replace(QMAKE_CFLAGS, "-O2 ", "")
于 2019-04-23T10:37:16.883 回答
0

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

QMAKE_CXXFLAGS+=-Zc:strictStrings-

像这样,编译器会打印一个警告: cl : Command line warning D9025 : overriding '/Zc:strictStrings' with '/Zc:strictStrings-' 但它仍然可以完成这项工作。

于 2019-10-16T13:40:45.580 回答
-1

对我有用的是在 .pro 文件中添加以下内容:

QMAKE_CXXFLAGS -= -Zc:strictStrings
于 2019-12-03T14:32:06.853 回答