1.简述
版本组合
macOS 10.14.6 (自行更新即可)
qt-opensource-mac-x64-android-ios-5.7.1.dmg 官方下载链接
Xcode10.0
qt for ios是把一个qt工程生成一个xcode的工程文件,这个工程文件用xcode编译运行,就可以部署到ios了。
首先是选择qt版本,因为一直使用qt5.7.1,新的版本翻到qt5.15里也没找到支持ios的,正好官网5.7.1版本也有ios版本的包,就下载这个版本了。
现在xcode已经更新到11.6,需要把系统升级到最新才能使用。不想升级系统只能下载老版本来用了,于是就选了xcode10.0。
![](https://i-blog.csdnimg.cn/blog_migrate/c0795ec01d5be4631a131013f14c2667.png)
![](https://i-blog.csdnimg.cn/blog_migrate/97335b226c0f978fab721f8c9722e6e1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/418b1eff2e65dd388e46d2726ce67ce3.png)
2.安装过程
想必看这篇博文的也是qt的老油条了,qt的安装过程就略掉了,和windows步骤一样,不清楚的可以看其他博主。
Xcode10.0的安装过程倒是有些坎坷,而且是个xip的包,因为这个老版本的签名过期了,提示解压错误,解决办法是修改系统时间到2019年,重新解压就成功了,上有政策下有对策啊。
安装完之后,放到应用程序目录。
打开Xcode,参见其他博主的Xcode helloworld教程,第一个app就成功了。Xcode环境验证无误之后,试试qt吧。
打开qt,查看构建套件,这些东西现在都被我弄好了。就是需要把qt的这些工具路径加到环境变量(环境变量的加法和linux相同,直接添加就行)中。包阔gcc、g++的路径,要不然下边就都是感叹号,自动检测不出来。
编译桌面版hello world。没毛病,平稳运行,ios就不行了,请看以下错误
错误一
选择ios模拟器编译,报了一个错误,Projector ERROR:This mkspec requires Xcode 4.3 or later。Xcode10.0还让我or later,这个错误折腾了一下午,大致意思是说5.9.6版本有这个bug,5.9.7修复了,关键是我这是5.7.1啊。这个打印是qmake打出来的,
查到的三两个相关问题,大概意思是把这个文件里检查版本的语句注释掉,但是呢,根据他这个路径我找不到这个语句,翻了(手动的翻蠢哭了)二十多个文件没找到。
就在这时,突然开窍,找到了错误文件,打开注释掉。感慨了命令的强大。
$:cd developer/softpath/Qt5.7.1/5.7/ios/mkspecs/
$:grep -n "This mkspec requires" -r ./
.//macx-ios-clang/features/default_pre.prf:11:# error("This mkspec requires Xcode 4.3 or later")
.//common/qcc-base-qnx.conf:61: isEmpty(QMAKE_SH): error("This mkspec requires an MSYS environment.")
错误二
解决了那个错误,又给我蹦出来个错误,“You need to update Xcode to version 6 or newer to fully support iPhone6/6+”,我可去你丫的,故技重施
$:grep -n "You need to update Xcode to version" -r ./
.//macx-ios-clang/features/default_post.prf:38:# warning("You need to update Xcode to version 6 or newer to fully support iPhone6/6+")
在这个文件的38行,干掉它,注释、保存、运行。
我在编译结果里得到了
** BUILD SUCCEEDED **
先开心一会,
等等,你以为这就结束了,你还是太年轻了,坑是永远都踩不完的。因为你是独行侠。
模拟器似乎什么也没显示,黑屏,说好的helloworld呢。
不知道从何下手,这个程序已经被安装了,但是启动后黑屏,迟迟没有helloworld,
找到生成的Xcode工程文件,
就在这个里边打开看看这会是个什么工程,双击进入了Xcode,喜闻乐见,这是我熟悉的东西。看看能不能编译,点击编译,又Build Successed。太好了,期待结果。
没错,这一次你已经走到了本篇博文的进度条底部,一个成功的hello IOS。
距离这个hello IOS已经过去了一天,我又因为各种版本问题在踩真机调试的坑,因为还没有成功的在真机上运行。