从源码编译Qt5.15程序库

2023年8月28日 0 By Majjcom

大部分的的编译信息可以在Qt官方文档中找到

Windows

首先是在Windows上构建Qt库的步骤。

开始前准备

前往Qt Downloads页面,在archive中,下载最新的5.15源码包。

下载版本较新的qtcreator,需要用到里面的jom进行多线程编译

jom可以从http://code.qt.io/qt-labs/jom.gitclone

在电脑中准备Python2.7环境,如果存在版本冲突,可以考虑使用anaconda或者miniconda

下载perl

准备Visual Studio 2022以及相应的SDK包

激活构建环境

  • 在源码目录下启用CMD
  • 使用vcvars64激活64位MSVC环境(32位可以用vcvarsall x86)
  • 在当前的PATH变量中添加perljom所在的路径
  • 激活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_HOMEGRADLE_USER_HOMEANDROID_HOMEANDROID_SDK_HOME

在qtcreator中设置SDK,qtcreator会自动下载安装需要的包

安装msys2

在msys2中使用pacman安装mingw-w64-x86_64-toolchain工具链

安装Python环境

激活构建环境

  • 在源码目录下打开CMD
  • 运行chcp 65001切换代码页至UTF-8
  • perlmingw32JDK添加至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

即可完成文档的构建