Qmake:如何在不更改Qmake .conf的情况下删除某个项目的编译器标志
Qmake: how to remove compiler flag for a certain project, without changing qmake.conf?
我使用的是qmake
和Visual Studio。在发布构建qmake添加/GL和/O2标志到所有项目,我需要在我的整个Qt项目中删除某些库的这两个标志。有办法吗?
我有一个类似的问题,我通过在.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
看看:
your Qt dircompilermkspecswin32-msvc2013qmake.conf
唯一可行的方法是
QMAKE_CFLAGS -= /GL /O2
但我怀疑这是否适用于QMAKE_CFLAGS
。
或者,您可以重新定义QMAKE_CFLAGS
,忘记其先前的值:
QMAKE_CFLAGS = $$CFLAGS_WITHOUT_GL_O2
您可以编辑配置中使用的qmakespec。
最简单的方法是打开
%QTDIR%mkspecs%QMAKESPEC%
假设环境变量已设置(它们应该设置)
以防它不工作,它将是C:Qt4.x.xmkspecswin32-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将更方便。
如果-=
不工作
try in your .pro文件
QMAKE_CFLAGS = $$replace(QMAKE_CFLAGS, "-GL ", "")
QMAKE_CFLAGS = $$replace(QMAKE_CFLAGS, "-O2 ", "")
对于MacOSX (Xcode 13)上的Qt 5.15.2,在QtCreator项目中没有其他答案适合我。
CONFIG += warn_on
默认设置为-Wall -Wextra
。
我想添加的是:
QMAKE_CXXFLAGS += -Wno-unused -Wno-unused-parameter
但是添加这个会导致额外的编译器标志被添加到-Wall -Wextra
之前的编译命令中,并且它不起作用。
这些标志是由QMAKE_CXXFLAGS_WARN_ON
变量添加的/path/to/Qt/5.15.2/clang_64/mkspecs/common/gcc-base.conf
.
所以暂时将它们添加到-Wall -Wextra
标志之后,我这样做:
QMAKE_CXXFLAGS_WARN_ON += -Wno-unused -Wno-unused-parameter
现在我有了所有其他的警告,但没有unused-*
的警告
最近我遇到了同样的问题。我不得不删除Zc:strictStrings编译器标志。我立刻意识到,仅仅移除是行不通的。因此,解决方案是通过将此字符串包含到.pro文件
中来覆盖该标志。 QMAKE_CXXFLAGS+=-Zc:strictStrings-
像这样,编译器打印一个警告:cl:命令行警告D9025:用'/Zc:strictStrings-'覆盖'/Zc:strictStrings',但它仍然工作。
我在。pro文件中添加了以下内容:
QMAKE_CXXFLAGS -= -Zc:strictStrings
- 将数组的地址分配给变量并删除
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C/C++编译器通常会删除重复的库吗
- 从链接列表c++中删除一个项目
- C++如何通过用户输入删除列表元素
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 使用函数"remove"删除重复元素
- 如何从多映射中删除特定的重复项
- 运算符C++ "delete []"仅删除 2 个前值
- 删除指向指针的指针是运行时错误吗
- 将指针设置为"nullptr"并不能防止双重删除?
- 为什么示例代码访问IUnknown中已删除的内存
- 如何通过 getter 函数删除矢量的元素?
- 从控制台中删除最后打印的元素
- C++中的线程安全删除
- 如何从 qmake 中的包含路径中删除项目的根目录
- Qmake:如何在不更改Qmake .conf的情况下删除某个项目的编译器标志