Qt 是一个跨平台的应用开发框架,而 Qt 官方也为 Windows, macOS, Linux 提供了官方的打包工具(例如在 macOS 上就是 macdeployqt),但是在 macOS 上打包还是踩尽了坑,问遍了国内外所有的 AI 和搜索引擎,耗时 3 天,最终在通义千问的启发下终于破圈,这波通义千问遥遥领先立大功。以下内容为本次使用 Qt 6 打包 macOS 应用的踩坑记录,希望能对大家有所帮助,也起到一个备忘的作用。
困扰指数:⭐️
这个问题不难解决,互联网上资料也相当多,在这里只是提一嘴。如果打包之后出现程序崩溃,macOS 会给出报错告知程序缺什么依赖库,只需要找到对应的依赖库拷贝到 YourApp.app/Contents/Frameworks 即可解决。或者也可以通过 otool 和 install_name_tool 工具修改相关依赖库的地址解决。
困扰指数:⭐️⭐️
出现该问题的原因是没有设置 QT_QPA_PLATFORM_PLUGIN_PATH 变量的值,所以报错信息后面一个引号里面是空值。找到 Qt 目录下 libqcocoa.dylib 的目录然后使用设置为 QT_QPA_PLATFORM_PLUGIN_PATH 的值即可解决问题。
困扰指数:⭐️⭐️⭐️⭐️⭐️
以上所有问题都解决之后如果你使用的是 Qt 6 开发应用程序,还有可能碰到这个问题,单就这个问题就困扰了我两天,问遍国内外所有的 AI,搜遍国内外所有的资料(包括常用的 GitHub, Stackoverflow 以及 Qt 官方的文档等),我甚至已经开始尝试走起了用 CMake 生成 Xcode 工程文件使用 Xcode 打包的邪路,最终才在通义千问的启发下找到解决办法。
出现这个问题是因为 macdeployqt 这个打包工具是为 Qt 5 准备的(准确点说应该是 Qt 5.15),所以出现了不兼容的情况,要想打包使用 Qt 6 开发的软件需要使用同目录下的 macdeployqt6 工具,官方文档都没有提到有这个东西😡!
更多未尽的打包 macOS Qt 软件的内容可以参考官方文档:https://doc.qt.io/qt-6/macos-deployment.html