ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Qt5适配M1

2021-08-13 20:34:47  阅读:346  来源: 互联网

标签:Qt5 x86 适配 universal 编译 M1 5.15 Qt


 大部分情况下Qt的x86应用程序可以运行于M1的 Rosetta之上,但是当我们基于Qt的应用程序依赖仅仅支持Arm64架构的库时就无法链接通过了.当前时间点为2021年8月份Qt尚未提供支持M1的免费发布版本,Qt 6.2有一个Preview版本支持M1,但普通用户有使用期限,且Preview版本并不是稳定版用上去有风险.

 

1、编译M1版本的Qt(5.15.2版本)

    参考 https://www.reddit.com/r/QtFramework/comments/ll58wg/how_to_build_qt_creator_for_macos_arm64_a_guide/ (此网站可能需要fan qiang,第一部分内容主要就是翻译翻译)

 

其主要步骤如下:

在M1电脑上(X86电脑相同的编译选项无法编译通过)

 安装必备的工具

            编译Qt lib需要安装: brew install pcre2 harfbuzz freetype

            编译Qt creator需要安装:

                                      brew install cmake ninja python

                                      brew install --build-from-source llvm

 

下载 Qt 5.15.2的源码:https://download.qt.io/archive/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz                                   (.zip的包是windows版本的,不要下载zip的包)

 

解压此压缩包,在压缩包解压文件夹同一层目录创建构建目录:

          mkdir  buildir

然后在同一层目录下创建编译目标路径

          mkdir outDir

进入构建目录 

       cd  buildir

 

编译配置

       ../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

 

编译

       make -j15

安装

        make install

 

此时在 outDir目录下就有一套完整的Qt工具集和库(没有3D模块)

 

2、制作universal版Qt

 此时编译的Qt可以在M1电脑上编译大部分的工程,但却无法运行于x86电脑上.为了让x86电脑上也能编译运行于arm64版本的Qt,需要将Qt制作成为universal的Qt.

 

 在一台x86的Mac电脑上同步骤1进行安装工具,编译Qt等操作,唯一不一样的是编译配置,在x86下应该用

      ../qt-everywhere-src-5.15.2/configure -release -prefix ./outDir -nomake examples -nomake tests QMAKE_APPLE_DEVICE_ARCHS=x86_64 -opensource -confirm-license -skip qt3d -skip qtwebengine

 

做成x86版本的Qt后需要将两个Qt版本合并为universal版Qt,参考 https://developer.apple.com/documentation/apple-silicon/building-a-universal-macos-binary  可以知道用lipo 工具可以将arm与x86程序融合成universal版本程序,Qt的工具集很多,一个一个操作相当费时.

GitHub上有个工具相当方便 https://github.com/nedrysoft/makeuniversal,用makeuniversal工具可以合并两个文件夹为univerdal.

 

./makeuniversal   ./qt5-mac-universal ./qt5-mac-x86_64  ./qt5-mac-arm64 

其中 qt5-mac-x86_64为之前编译的x86版本Qt工具与lib集,qt5-mac-arm64 为之前编译arm64工具与lib集,命令执行成功后 qt5-mac-universal路径下就是支持两个平台的Qt工具与lib集 .

 

3、编译universal 程序

使用上面做成的universal的Qt工具集像往常一样创建Qt工程,然后在Qt工程配置文件xxx.pro文件里添加一句

  QMAKE_APPLE_DEVICE_ARCHS="x86_64 x86_64h"

即告诉编译系统要编译支持两个平台的app,编译成功后生成的app就已经支持在两个平台上运行了.

 

标签:Qt5,x86,适配,universal,编译,M1,5.15,Qt
来源: https://www.cnblogs.com/wqcwood/p/15138983.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有