从源码编译Qt5.15程序库
2023年8月28日大部分的的编译信息可以在Qt官方文档中找到
Windows
首先是在Windows上构建Qt库的步骤。
开始前准备
前往Qt Downloads页面,在archive
中,下载最新的5.15源码包。
下载版本较新的qtcreator
,需要用到里面的jom
进行多线程编译
jom可以从http://code.qt.io/qt-labs/jom.git
clone
在电脑中准备Python2.7
环境,如果存在版本冲突,可以考虑使用anaconda
或者miniconda
下载perl
准备Visual Studio 2022
以及相应的SDK包
激活构建环境
- 在源码目录下启用
CMD
- 使用
vcvars64
激活64位MSVC环境(32位可以用vcvarsall x86
) - 在当前的
PATH
变量中添加perl
、jom
所在的路径 - 激活
python2.7
环境 - 将源码目录下
gnuwin32/bin
目录添加到PATH
中
配置构建参数
需要根据实际情况替换{}
的内容
Dll版本
.\configure.bat -debug-and-release -prefix {PATH_PREFIX} -opensource -confirm-license -nomake examples -nomake tests -skip qtwebengine -openssl-runtime OPENSSL_INCDIR="{INCLUDE_DIR}"
Static版本
.\configure.bat -static -debug-and-release -prefix {PATH_PREFIX_STATIC} -opensource -confirm-license -nomake examples -nomake tests -skip qtwebengine -openssl-runtime OPENSSL_INCDIR="{INCLUDE_DIR}"
可能需要修改部分编译配置的MD到MT,详情见后面的ICU的文章。
WebEngine
- 此项目未验证
.\configure.bat -debug-and-release -prefix {PATH_PREFIX} -opensource -confirm-license -nomake examples -nomake tests -webengine-proprietary-codecs -openssl-runtime OPENSSL_INCDIR="{INCLUDE_DIR}"
构建和安装
jom
jom install
Qt for Android
开始前准备
安装qtcreator9.0.2
以上的版本
关于qtcreator环境准备可以看这里
下载JDK17
设置GRADLE_HOME
、GRADLE_USER_HOME
、ANDROID_HOME
、ANDROID_SDK_HOME
在qtcreator中设置SDK,qtcreator会自动下载安装需要的包
安装msys2
在msys2中使用pacman
安装mingw-w64-x86_64-toolchain
工具链
安装Python环境
激活构建环境
- 在源码目录下打开
CMD
- 运行
chcp 65001
切换代码页至UTF-8
- 将
perl
、mingw32
、JDK
添加至PATH
中 - 激活
Python2.7
环境
配置构建参数
需要将<>
的内容进行替换
configure.bat -release -platform win32-g++ -xplatform android-clang -opensource -confirm-license -prefix {PREFIX_DIR} -nomake tests -nomake examples -skip qtwebengine -android-sdk {ANDROID_SDK_DIR} -android-ndk-platform {ANDROID_PLATFORM ex 24} -android-ndk {ANDROID_NDK_DIR} -android-ndk-host windows-x86_64 -android-abis {armeabi-v7a,arm64-v8a,x86,x86_64} -no-warnings-are-errors -openssl-runtime OPENSSL_INCDIR="{OPENSSL_INCLUDE_DIR}" -static-runtime
构建和安装
mingw32-make -j{CORES}
mingw32-make install -j{CORES}
使用Qt for Android
一定情况下修改build.gradle
中的内容
修改 ‘com.android.tools.build:gradle:x.x.x’ 的版本号(Android gradle插件)
以及
gradle-wrapper.properties
中的版本号(gradle本体)
对应关系参考这个页面
Android gradle插件在3.0之后可能无法在构建Qt应用中使用,需谨慎设置
目前可用的组合:Java17 + android gradle tool 7.4.2 + gradle-8.2.1 + android buildToolsVersion 31.0.0
将两个jcenter()
修改为maven { url 'https://maven.aliyun.com/repository/jcenter' }
文档构建
在Windows中,需要准备好LLVM的工具链
libclang可以在此处此处下载
下载16以下的版本,不然无法通过配置。。。
然后再配置
编译配置前设置环境变量LLVM_INSTALL_DIR
到安装目录
在配置页面显示yes后,先编译安装本体,再运行以下内容:
jom qmake_all
jom docs
jom install_docs
即可完成文档的构建