在MacOS环境下使用QT开发iOS程序——开发环境搭建

1,420 阅读3分钟

最近接手一个QT做的iOS项目,以前没有接触过,需要重新搭建开发环境。经过网上资料收集和各种试错,最后成功搭建出来开发环境,现在将自己的搭建步骤和出现问题的解决方法,梳理整理出来如下,希望能帮到有类似需求的同学。 我的操作环境是:macOS Monterey 12.0.1,Xcode 13.1

安装QT环境

选择最新版本

下载地址

www.qt.io/download-qt…

异常情况

网络情况较差时,可能会出现以下加载不出来的情况,需要切换网络多尝试几次

选择旧版本安装

版本下载地址

download.qt.io/archive/qt/

选择版本

选择对应版本的opensource,这里我选择5.9.9版本

下载完成

下载后对应的文件如下图:

5.9.9的文件名为:qt-opensource-mac-x64-5.9.9.dmg

最新版的文件名为:qt-unified-macOS-x64-4.5.0-online.dmg

安装下载的dmg文件

打开5.9.9.dmg文件

打开5.9.9.app文件

开始步骤安装

登录QT账号

选择安装目录

选择安装的组件

选择许可协议

使用LGPL协议即可

准备安装

正常安装,大概需要24G的存储空间。我这里内存不足,需要清理一下电脑内存

安装完成

Qt Creator

步骤新建一个Qt Quick Application

项目名称

Build System

最小支持的Qt版本

选择多语言

选择应用的运行平台

完成新建步骤

  1. 新项目的结构

运行Hello World程序

生成Xcode项目

  • 在终端进入到项目所在目录:cd /Users/law/Desktop/xqProj/Qt/QTForXcode

  • 找到QT的qmake路径,我的目录是:/Users/law/Qt5.9.9/5.9.9/ios/bin/qmake

  • 执行指令将qt的项目转换成xcode项目:/Users/law/Qt5.9.9/5.9.9/ios/bin/qmake QTForXcode.pro -spec macx-xcode

生成Xcode项目的异常解决

生成xcode项目时出现错误:

ld: building for iOS, but linking in object file built for iOS Simulator, file '/var/folders/yc/3rs66xd92gn27rkdpj2s6yqr0000gn/T/--d0721e.o' for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
===================
Maybe you forgot to setup the environment?

我的Qt版本是5.9.9,xcode版本为:Version 13.1 (13A1030d),可能是版本兼容问题。

网上找到的方法:

bugreports.qt.io/browse/QTBU…

  • 解决方法

    •   toolchain.prf文件60行代码修改,

    •   修改前:

    • output = $$system("$$cmd_prefix $$QMAKE_CXX $$qtMakeExpand($$cxx_flags) -xc++ - 2>&1 $$cmd_suffix", lines, ec)
              !equals(ec, 0): qtCompilerErrror($$QMAKE_CXX, $$output)
      
    •   修改后:

    • output = $$system("$$cmd_prefix $$QMAKE_CXX $$qtMakeExpand($$cxx_flags) -xc++ - 2>&1 $$cmd_suffix", lines, ec)
              !uikit:!equals(ec, 0): qtCompilerErrror($$QMAKE_CXX, $$output)
      
    •   再次执行生成xcode项目

    •   进入到项目所在目录

    •   运行指令:/Users/law/Qt5.9.9/5.9.9/ios/bin/qmake QTForXcode.pro -spec macx-xcode

    •   完成后的文件结构

打开xcode项目,修改配置

  • 修改Bundle Identifier
  • 修改证书Profile

选择iOS设备

使用15.0的模拟器编译会出错,应该是一些版本兼容问题,这里不做分析。

我这里使用的是真机,ipad第6代,13.6的系统,可正常编译

运行时出现错误

The Legacy Build System will be removed in a future release. You can configure the selected build system and this deprecation message in File > Project Settings.

我们按照提示来修改工程设置

我们将build System中的Legacy Build System(Deprecated)改成New Build System

运行程序

程序成功运行。如果报错未发现qrc_qml.cpp,需要重新编译运行一下,就可以了