我正在使用qmake
和 Visual Studio。在发布版本中,qmake 将 /GL 和 /O2 标志添加到所有项目中,我需要为我的整个 Qt 项目中的某些库删除这两个标志。有办法吗?
7 回答
我有一个类似的问题,我通过在 .pro 文件中添加以下指令来解决它:
QMAKE_CXXFLAGS_RELEASE -= -g
注意 _RELEASE 后缀,否则不起作用。
我使用它编辑了我的 .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
唯一可行的方法是
QMAKE_CFLAGS -= /GL /O2
但我怀疑这是否适用QMAKE_CFLAGS
。
或者,您可以重新定义QMAKE_CFLAGS
,忘记其先前的值:
QMAKE_CFLAGS = $$CFLAGS_WITHOUT_GL_O2
您可以编辑配置使用的 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 会更方便。
如果-=
不起作用
试试你的 .pro 文件
QMAKE_CFLAGS = $$replace(QMAKE_CFLAGS, "-GL ", "")
QMAKE_CFLAGS = $$replace(QMAKE_CFLAGS, "-O2 ", "")
最近我遇到了同样的问题。我不得不删除 Zc:strictStrings 编译器标志。我立即了解到,仅删除是行不通的。因此,解决方案是通过将此字符串包含到 .pro 文件中来覆盖标志
QMAKE_CXXFLAGS+=-Zc:strictStrings-
像这样,编译器会打印一个警告: cl : Command line warning D9025 : overriding '/Zc:strictStrings' with '/Zc:strictStrings-' 但它仍然可以完成这项工作。
对我有用的是在 .pro 文件中添加以下内容:
QMAKE_CXXFLAGS -= -Zc:strictStrings