qmake 速度慢是一个常见问题,特别是对于大型项目。以下是一些可以显著提高 qmake 速度的方法:
1. 使用 shadow build(影子构建)
确保使用独立的构建目录,避免在源码目录中生成文件:
# 在项目根目录外创建构建目录
mkdir build
cd build
qmake ../xxx.pro
2. 优化项目文件结构
在你的 xxx.pro 中可以添加:
# 禁用不必要的特性
CONFIG -= flat
# 减少调试信息生成
win32 {
CONFIG -= debug_and_release
CONFIG += release
}
# 禁用不必要模块
QT -= gui # 如果某些子项目不需要GUI
3. 使用预编译头文件(PCH)
# 在 xxx.pro 中添加
PRECOMPILED_HEADER = stdafx.h
创建 stdafx.h 包含常用头文件:
#include <QtCore>
#include <QtGui>
#include <QtWidgets>
// 其他常用头文件
4. 减少包含文件的重复处理
优化包含路径,避免重复搜索:
# 清理重复的包含路径
INCLUDEPATH -= /usr/include
INCLUDEPATH -= /usr/local/include
5. 使用 unity build(统一构建)
# 启用统一构建
CONFIG += unity_build
UNITY_BUILD = true
6. 并行 qmake 处理
虽然 qmake 本身不是高度并行的,但可以优化其运行环境:
# 设置环境变量加速 qmake
export QT_RCC_MAX_EXEC_TIME=0
export QT_RCC_PARALLELISM=1
7. 清理和重新生成
定期清理缓存文件:
# 清理 qmake 缓存
rm -rf .qmake.cache
rm -rf *.pro.user*
# 或者在 Qt Creator 中清理项目
8. 升级 Qt 版本
如果可能,升级到更新的 Qt 版本,新版本的 qmake 通常性能更好。
9. 禁用不必要的 qmake 特性
在 xxx.pro 中添加:
# 禁用一些耗时的检查
CONFIG -= depend_includepath
CONFIG -= sanitize
CONFIG -= gcov
10. 使用 qmake 缓存
# 使用缓存选项
qmake -config release -cache
11. 分析慢的原因
添加调试信息来确定瓶颈:
# 在 xxx.pro 中添加
message(Starting qmake at $$system(date))
# 项目配置...
message(Ending qmake at $$system(date))
12. 最推荐的组合方案
在你的 xxx.pro 中添加:
# qmake 优化设置
CONFIG -= flat
CONFIG -= debug_and_release
CONFIG += release
CONFIG -= depend_includepath
# 启用统一构建(如果适用)
# CONFIG += unity_build
# 并行编译设置
unix {
MAKEFLAGS += -j$(nproc)
}
win32 {
MAKEFLAGS += -j$$(NUMBER_OF_PROCESSORS)
}
然后在命令行中使用:
# 使用影子构建
mkdir build && cd build
qmake CONFIG+=release ../xxx.pro
13. 硬核方案: 编译器逻辑处理器核心数指定
请看CPU利用率

注意:逻辑处理器根据需要至少留1个给操作系统使用,防止操作系统卡死。

编译过程,可以看到编译速度明显加快。

这些优化措施应该能显著提高 qmake 的执行速度,特别是对于大型项目如你的 xxx。建议从影子构建和禁用不必要特性开始尝试。
9552

被折叠的 条评论
为什么被折叠?



