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