【Qt】Qt项目qmake与编译速度过慢,如何优化.pro

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。建议从影子构建和禁用不必要特性开始尝试。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值