Qt 加快工程编译速度
一、多核编译
环境:win10, Qt 5.4.1,编译器mingw32
项目: Qt for Android
Qt Creator 在编译android项目时不支持预编译,默认cpu单核编译,工程稍大一点导致编译过程极其缓慢,影响效率。
不过Qt Creator自带了多核编译工具支持,只是没有默认开启,需要自己在项目中进行配置才能生效。
步骤如下【以本机和项目为例】:
1.查看是否已经安装了jom工具:C:\Qt\Qt5.4.1\Tools\QtCreator\bin\jom.exe
2.项目添加参数-j 4【4是cpu的核数,我的是i5,只有四个核心】
添加参数完毕后可以重新编译项目试试看,编译的时候可以打开任务管理器,能看到所有的cpu核心都能被充分利用。
之前我的机器【cpu i5-4590/内存8G/机械硬盘】项目全部重编需要50多分钟,启用多核以后,只需要13分钟左右。
PS.如果是编译器用的是ms的vc++,则只需要在.pro文件中添加 QMAKE_CXXFLAGS += /MP 即可。
CSDN QT大纲:Qt开发必备技术栈学习路线和资料
二、使用预编译头
“用Qt写的程序编译比MFC慢”的说法是错误的。单位代码行数编译Qt远比MFC快得多,因为Qt库的头文件设计非常好,尽量都使用了前置声明,避免了头文件嵌套,几乎所有类都使用了公有类和私有类的设计,把没必要公开的声明放到私有头文件里,避免了编译时引入过多代码。而MFC没有这样的设计。
至于大家感觉MFC快主要原因是MFC工程默认打开了编译预处理头文件(PCH),但是这是VC编译器的特性,所有C++程序都可以用,不是MFC特有,Qt也可以使用 PCH。
方法很简单,在你的 .pro 文件中加入一行
PRECOMPILED_HEADER = stable.h
指定 Stable.h这个头文件作为编译预处理文件,MFC里这个文件一般叫stdafx.h。然后在 stable.h里 包含你所用到的所有 Qt 头文件,如果你用了很多qt的类可以直接包含所有
比如 :
#include <QtCore>
#include <QtGui>
这两个文件里又包含了几乎所有Qt常用类。不用担心,即使包含了所有头文件也没关系,有了PCH再多头文件也没影响。
如果你还想编译再快点,可以在 .pro里加入下面一行
QMAKE_CXXFLAGS += /MP
指定/mp编译选项,编译器将使用并行编译,同时起多个编译进程并行编译不同的cpp。
而且QT这种引入PCH的方法比MFC的好,由于MFC的PCH选项是每个工程逐个指定的,很容易被某些人搞坏,我曾经无数次修复PCH问题,但是Qt的选项是写在.pro里的,写一次就永远不会错。
MFC一旦弄坏了PCH,编译也慢得令人发指。
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓
相关文章
- [Qt教程] 第22篇 数据库(二)编译MySQL数据库驱动
- Qt-Qt之grabWindow实现截图功能
- 用VS2019打开工程后,编译提示"error:there‘s no Qt version assigned to XXXXX"
- Qt-工程打开后,编译提示“error: member access into incomplete type 'Ui::MainWindow'”
- Qt-Qt之QVariant的使用分析
- 关于编译Qt以及驱动的一点总结吧
- 亲测VS2010纯静态编译QT4.8.2,实现VS2010编译调试Qt程序
- Qt编译数据库插件通用步骤说明
- Qt如何实现http服务
- Qt多线程创建
- QT 面试题汇总[通俗易懂]
- Qt之实现物体移动(QPainter)
- Qt编译Qtxlsx库(亲测有效)
- Qt QRegExp 正则表达式
- Qt QSS教程 QLineEdit
- Qt实现FTP下载
- Qt ncnn Windows编译
- QT-自带库QSerialPort串口使用
- vs2015中无法设置Qt版本,qt project setting 是灰色,Qt无法编译ui文件
- 基于Qt有限状态机的一种实现方式和完善的人工智能方法
- Ubuntu20.04下qt交叉编译报错::15: error: ‘nullptr‘ was not declared in this scope
- Qt on Android:QTableView不显示选中虚框
- QT 资源文件
- 嵌入式linux开发,qt移植,交叉编译qt-everywhere-opensource-src-4.8.5