C++ Qmake:如何在不更改Qmake.conf的情况下删除特定项目的编译器标志?

C++ Qmake:如何在不更改Qmake.conf的情况下删除特定项目的编译器标志?,c++,qt,qmake,compiler-options,C++,Qt,Qmake,Compiler Options,我正在使用qmake和VisualStudio。在发布版本中,buildqmake将/GL和/O2标志添加到所有项目中,我需要删除整个Qt项目中某些库的这两个标志。有办法吗 唯一可行的方法是 QMAKE_CFLAGS -= /GL /O2 但我怀疑这是否适用于QMAKE\u CFLAGS 或者,您可以重新定义QMAKE\u CFLAGS,忘记其先前的值: QMAKE_CFLAGS = $$CFLAGS_WITHOUT_GL_O2 您可以编辑配置使用的qmakespec 找到它最简单的方法是打

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

唯一可行的方法是

QMAKE_CFLAGS -= /GL /O2
但我怀疑这是否适用于
QMAKE\u CFLAGS

或者,您可以重新定义
QMAKE\u CFLAGS
,忘记其先前的值:

QMAKE_CFLAGS = $$CFLAGS_WITHOUT_GL_O2

您可以编辑配置使用的qmakespec

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

%QTDIR%\mkspecs\%QMAKESPEC%
假设设置了环境变量(应该设置)

为了防止它不工作,它将类似于
C:\Qt\4.x.x\mkspecs\win32-msvc2010

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

但是请注意,对于您正在使用的每个Qt版本(以及将来的每个更新),您都必须这样做

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

QMAKE_CFLAGS_RELEASE    += -O2
QMAKE_CFLAGS_LTCG       += -GL
到需要这些选项的项目的.pro文件


根据使用它和不使用它的项目的数量,这种方法或重新定义QMAKE_CFLAGS都会更方便。

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

QMAKE_CXXFLAGS -= -Zc:strictStrings
QMAKE_CXXFLAGS_发布-=-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 dir\compiler\mkspecs\win32-msvc2013\qmake.conf

试试你的.pro文件

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

最近我遇到了同样的问题。我必须删除Zc:strictStrings编译器标志。我马上就明白了,仅仅是移除是不起作用的。因此,解决方案是通过将该字符串包含到.pro文件中来覆盖该标志

QMAKE\u cxflags+=-Zc:strictStrings-


像这样,编译器打印一条警告:cl:命令行警告D9025:用“/Zc:strictStrings-”覆盖“/Zc:strictStrings”,但它仍然执行此任务。

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

QMAKE_CXXFLAGS -= -Zc:strictStrings

尝试了
-=
-运气不好。第二个解决方案非常明显,我甚至没有想到:)我相信检查.conf文件不能被下划线。请添加详细信息,解释代码行的作用。我建议详细说明该行的使用位置(在配置文件中或从命令行),并解释该行如何从整个项目中删除标志。这将帮助其他人了解并评估所提供的答案是否适用于他们。
QMAKE_CXXFLAGS -= -Zc:strictStrings