1、下载 QT 源码
QT5.12.7源码下载地址: download | QT 5.12.7
选择任意一种下载即可,适用于 Windows 和 Linux 环境
这里选择下载 .zip 文件。
2、安装依赖
(1) 安装 perl
perl 安装包下载地址: download | perl for windows
根据当前系统选择对应版本。下载完毕后双击开始安装,一路next即可。最终可以在命令行查看perl 是否安装成功,输入 perl -v
(2) 安装 ruby
ruby 国内下载镜像: download | ruby 3.2.2
点击所需版本开始下载,下载完毕后就根据提示进行安装
安装完毕后,点击 finish,此时会出现一个弹窗,输入 3
检查是否安装成功
(3) 安装 python
python 下载地址: Welcome to Python.org
python的安装这里就不再赘述,可以自行百度,python 版本只需要大于 2.7 即可。
3、创建编译脚本
因为编译 QT 涉及的选项较多,这里选择使用自定义的脚本来进行编译,在 qt 源码的上一层目录下新建一个脚本文件 qt-config.bat。脚本文件的内容如下:
@echo off
call "D:/Download/VS2019/install/VC/Auxiliary/Build/vcvars64.bat"
pushd qt-everywhere-src-5.12.9
configure -prefix C:/Users/GZX/Desktop/qt-everywhere-src-5.12.9/install -opensource -confirm-license -debug -static -nomake examples -nomake tests -skip qtquickcontrols -skip qtquickcontrols2 -skip qtsensors -skip qtdoc -no-openssl -no-opengl -mp
第一句 @echo off 表示不打印注释
第二句 call 是用来引用vs编译器的相关环境变量的,路径需要跟你实际的安装路径对应(推荐使用 everything 工具找到对应的文件)
第三句 pushd 表示进入到qt源码目录下,该目录下包含 configure.bat 文件
第四句就是配置 qt 的编译选项了,可以参考下面的部分选项解释(下面是Linux环境下的脚本)
4、开始编译 QT 源码
进入到 qt-config.bat 脚本所在的命令行路径,输入 .\qt-config.bat 便可以开始运行脚本进行编译了(中间可能会停下来,需要你选择qt版本和是否接受认证)
执行完毕后,接下来输入 nmake 进入漫长的编译过程了。(建议预留足够的磁盘空间)
编译完毕后,输入 nmake install 安装到之前指定的目录下
安装完毕后,需要将两个路径添加到环境变量
- qt库的 bin目录: 这里面包含了所有的 dll 文件,这是执行文件在运行时所需的
- qt 库的 platforms目录: 该目录的位置在 qt安装目录/plugins/platforms
5、cmake 引入 QT 库
CMakeLists.txt
cmake_minimum_required(VERSION 3.15.0)
project(QTTest)
set(QT_ROOT_PATH "C:/Users/GZX/Desktop/qt5_7_lib_shared_64")
# 添加库的检索路径
list(APPEND CMAKE_PREFIX_PATH ${QT_ROOT_PATH})
find_package(Qt5 COMPONENTS
Gui
Core
Widgets
)
# 添加头文件路径
include_directories(${QT_ROOT_PATH}/include)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON) # 自动编译.ui文件
set(CMAKE_AUTORCC ON) # 自动编译.qrc文件
set(CMAKE_AUTOMOC ON) # 自动编译包含宏Q_OBJECT的文件
add_executable(${PROJECT_NAME} qtTest.cpp)
target_link_libraries(${PROJECT_NAME}
Qt5::Core
Qt5::Widgets
Qt5::Gui
)
qtTest.cpp
#include <QtWidgets/QLabel>
#include <QtWidgets/QApplication>
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QLabel *label = new QLabel("Hello Qt!");
label->show();
app.exec();
return 0;
}
参考文章:
记一次Qt 5.15源码编译 - 知乎
Windows平台下安装Ruby_windows安装ruby-CSDN博客
Perl 环境安装 | 菜鸟教程