参考链接 :https://blog.csdn.net/weixin_52435933/article/details/128291291

一.准备工作

1.对应版本的源码 :

下载Qt 5.15.2的源码

https://download.qt.io/archive/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz

2.编译需要的环境

(1)homebrew 快捷安装工具! – 辅助作用

(2)安装cmake 推荐观看 – xcode安装!

二.开始编译工作

1.设置arm64版编译并生成makefile

cd path
#解压压缩包
x qt-everywhere-src-5.15.2.tar.xz
#创建文件夹buildir
mkdir buildir
cd buildir
#设置arm64版编译并生成makefile
../qt-everywhere-src-5.15.2/configure -release -prefix ./outDir -nomake examples -nomake tests QMAKE_APPLE_DEVICE_ARCHS=arm64 -opensource -confirm-license -skip qt3d -skip qtwebengine
#接下来会生成很多命令,不用管
  • 补充理解这段脚本是用于配置 Qt 5.15.2 源代码的命令,具体含义如下:
    • ../qt-everywhere-src-5.15.2/configure:运行位于上一级目录的 qt-everywhere-src-5.15.2 目录中的 configure 脚本,该脚本用于配置 Qt 的构建选项。
    • release:指定构建类型为发布版本,即优化后的版本,适用于最终发布的应用程序。
    • prefix ./outDir:指定安装目录为当前目录下的 outDir 子目录。这意味着构建完成后,Qt 库和工具将被安装到 ./outDir 目录中。
    • nomake examples:跳过构建 Qt 自带的示例程序。这样可以减少构建时间和生成的文件数量。
    • nomake tests:跳过构建 Qt 的测试程序。同样可以减少构建时间和生成的文件数量。
    • QMAKE_APPLE_DEVICE_ARCHS=arm64:指定在 macOS 上构建时使用的架构为 arm64。这是为了支持苹果的 M1 芯片等基于 ARM 架构的设备。
    • opensource:指定构建开源版本的 Qt。
    • confirm-license:自动确认 Qt 的开源许可证。
    • skip qt3d:跳过构建 Qt 3D 模块。
    • skip qtwebengine:跳过构建 Qt WebEngine 模块。

    通过这些选项,可以根据需要定制 Qt 的构建过程,选择要构建的模块、指定安装目录、优化构建类型等。这样可以生成一个符合特定需求的 Qt 版本,用于开发应用程序。

2.修复编译问题

(1)头文件缺失问题修复

#step one : vim打开如下文件
vim path/qt-everywhere-src-5.15.2/qtbase/src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h

#step two : find找到如下文件位置
#include <qpa/qplatformgraphicsbuffer.h>
#include <private/qcore_mac_p.h>

#step three : 增加如下头文件
进入vim的插入模式,在该语句块前加上
#include <CoreGraphics/CGColorSpace.h>

(2)增加结构体的名称

# step one : 
vim path/qt-everywhere-src-5.15.2/qtlocation/include/QtLocation/5.15.2/QtLocation/private/../../../../../src/location/declarativemaps/qdeclarativepolylinemapitem_p_p.h

# step two : 在esc按键后,shift + : => 输入:set number后显示行号
然后将523行处的typedef struct {改为typedef struct MapPolylineEntry {
# step thee : 改完后保存退出

3.开启所有进程进行编译

#在buildir目录下
make -j$(nproc)
  • 补充理解make -j$(nproc) 是一个在 Unix/Linux 系统上常用的命令,用于并行编译项目。让我们来详细解释一下这个命令的各个部分:
    • make:这是一个构建工具,通常用于自动化编译程序。它会根据 Makefile 文件中的规则来构建目标文件。
    • j:这是 make 命令的一个选项,用于指定并行执行的任务数量。通常,j 后面会跟着一个数字,表示要同时运行的作业数量。
    • $(nproc):这是一个 shell 命令替换,nproc 是一个用于获取系统处理器核心数量的命令。因此,$(nproc) 会被替换为系统当前可用的处理器核心数量。

    综合起来,make -j$(nproc) 的意思是使用系统上所有可用的处理器核心来并行编译项目。这样可以显著加快编译速度,尤其是对于大型项目来说。

    例如,如果你的系统有4个处理器核心,那么 make -j$(nproc) 就相当于 make -j4,即同时运行4个编译任务。

    请注意,并行编译可能会消耗更多的系统资源,因此在资源有限的系统上,你可能需要根据实际情况调整 -j 后面的数字,以避免系统过载。

4.开始安装

make install -j$(nproc)

三.应用Qt库

此处使用Clion

1.安装Qt5的项目 : Qt Widgets Excutables

2.配置上面编译好的Qt项目

set(CMAKE_PREFIX_PATH "/Users/alittle/Qt/5.15.2/clang_64/lib/cmake/Qt5")

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。