【发布时间】:2020-04-06 10:29:37
【问题描述】:
我有一个无法调试的 qmake 项目,因为 something 在调试模式下将-O2 -g 添加到编译器标志的末尾,覆盖了我所有的调试和优化标志。我已经为-O2 搜索了整个项目,但没有(我删除了我要发布的那个)。删除构建文件夹并再次运行 qmake 没有帮助。我正在尝试追踪添加编译器标志的内容,但我遗漏了一些东西。
可以添加编译器标志的已知事物:
-
QMAKE_CXXFLAGS- 添加所有构建中给定的标志。 -
QMAKE_CXXFLAGS_DEBUG- 添加调试版本中给出的标志。 -
QMAKE_CXXFLAGS_RELEASE- 添加发布版本中给出的标志。 -
CONFIG- 添加难以追踪的标志。CONFIG += strict_c++和CONFIG += c++17设法没有覆盖我的-std=c++17,但我不知道添加了哪些其他标志。qmake调用还包含CONFIG+=debug可能会或可能不会添加其他标志。我无法从the documentation 得知。 -
mkspec- 在 projects->build 中,它列出了有效的 qmake 调用,其中包括例如-spec linux-g++,我认为其中包括/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf,其中包括更多添加平台相关标志的文件。删除 spec 标志并没有删除不需要的-O2标志。它也适用于其他项目,所以它可能不是罪魁祸首。 -
TEMPLATE- 指定项目的组织方式。通常它只是APP,但这个使用subdirs,它可能会覆盖标志,因为所有子项目都需要具有相同的标志。
一个理想的答案是列出所有添加编译器标志的方法、它们的添加顺序、如何检查它们添加的标志以及如何更改它们的说明。
【问题讨论】:
标签: qmake