准备
- 安装
perl
sudo apt install perl
下载源码
-
首先克隆顶级Qt 5 git存储库
git clone https://code.qt.io/qt/qt5.git
-
切换qt分支
cd qt5 git checkout 5.14.1
-
下载子仓库
cd qt5 git checkout 5.14.1 perl init-repository
在这一步中,perl会下载 当前目录下.gitmodules
文件中有的模块。如果你不想全部编译,可以使用命令行来取消子模块的下载
例如取消 qtwebengine
的下载可以这样写
perl init-repository --module-subset=default,-qtwebengine
可以使用./init-repository -help
来查看帮助
编译
-
编译前
如果你之前安装过Qt并且设置过环境变量QTDIR
,这是没有关系的,但是你要保证你没有设置过QMAKEPATH
或者QMAKEFEATURES
,使用命令qmake -query
后输出中没有特定的Qt版本.有关这只设置的原因请参考下面的链接Qt文档-qmake配置项 保证$HOME/.config/Trolltech/QMake.conf
目录文件为空就好
-
编译配置
在Qt5同级目录下创建一个build目录,在其中执行
../qt5/configure -debug -developer-build -opensource -nomake examples -nomake tests -platform linux-clang
-developer-build
指定编译类型
-opensource
设置许可协议为GPL/LGPL
-nomake examples
不编译示例
-nomake tests
不编译测试单元
-platform linux-clang
使用clang编译 -
编译过程
执行玩步骤2 后,会有如下输出询问是复接受许可协议,输入y即可
-
配置后的问题
由于暂时不用webengine
模块, 先不编译 -
在当前目录下执行
make -j$(nproc)
即可编译
$(nproc)
获取当前CPU核心数
错误
如果使用g++编译,会出现如下问题,使用clang编译不会出现
error: unused parameter ‘other’ [-Werror=unused-parameter]
QTableWidgetSelectionRange::QTableWidgetSelectionRange(const QTableWidgetSelectionRange &other) = default;
解决方法:
在qt5/qtbase/mkspecs/common/g++-base.conf文件中加入QMAKE_CXXFLAGS += -Wno-unused-parameter
如何使用
- 下载Qt Creator,如果你当前环境中有,使用现有的版本即可
- 配置qt版本
- 配置构建套件