我正在使用 qmake
和 Visual Studio。在发布版本中,qmake会为所有项目添加 /GL 和 /O2 标志,而我需要在整个Qt项目中针对某些库删除这两个标志。有什么方法吗?
我正在使用 qmake
和 Visual Studio。在发布版本中,qmake会为所有项目添加 /GL 和 /O2 标志,而我需要在整个Qt项目中针对某些库删除这两个标志。有什么方法吗?
我曾经遇到过类似的问题,通过在 .pro 文件中添加以下指令解决了问题:
QMAKE_CXXFLAGS_RELEASE -= -g
注意 _RELEASE 后缀,否则无法生效。
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
-=
但没有成功。第二个解决方案非常明显,我甚至都没想到 :) - Violet Giraffe您可以编辑由配置使用的 qmakespec。
最简单的方法是打开
%QTDIR%\mkspecs\%QMAKESPEC%
C:\Qt\4.x.x\mkspecs\win32-msvc2010
这样的东西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 将更加方便。
在MacOSX上使用Qt 5.15.2(Xcode 13),在QtCreator项目中,其他答案都对我无效。
默认设置为CONFIG += warn_on
,具有-Wall -Wextra
。
我想添加的是:
QMAKE_CXXFLAGS += -Wno-unused -Wno-unused-parameter
-Wall -Wextra
之前被添加,并且它不起作用。/path/to/Qt/5.15.2/clang_64/mkspecs/common/gcc-base.conf
中的QMAKE_CXXFLAGS_WARN_ON
变量添加的。-Wall -Wextra
标志之后暂时添加它们,我这样做:unused-*
。-=
无效,请在您的.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-' 但它仍然可以完成工作。
QMAKE_CXXFLAGS -= -Zc:strictStrings