我正在用C++开发Qt项目。但是,在Mac上,无法运行它,因为它找不到任何库。
我按照Qt网站的说明进行操作,一个Qt文件出现在主目录中。
drwxr-xr-x 14 Toan staff 448 2 mar 20:25 .
drwxr-xr-x+ 52 Toan staff 1664 2 mar 20:21 ..
-rw-r--r--@ 1 Toan staff 8196 2 mar 21:23 .DS_Store
-rw-r--r-- 1 Toan staff 195548 16 fév 23:22 InstallationLog.txt
drwxr-xr-x 5 Toan staff 160 16 fév 23:13 Licenses
drwxrwxrwx 3 Toan staff 96 16 fév 23:13 MaintenanceTool.app
-rw-r--r-- 1 Toan staff 276471 16 fév 23:13 MaintenanceTool.dat
-rw-r--r-- 1 Toan staff 6274 16 fév 23:13 MaintenanceTool.ini
drwxr-xr-x 3 Toan staff 96 16 fév 23:13 Qt Creator.app
-rw-r--r-- 1 Toan staff 2794 16 fév 23:13 components.xml
drwxr-xr-x 3 Toan staff 96 16 fév 23:13 dist
drwxrwxrwx 7 Toan staff 224 2 mar 21:23 installerResources
-rw-r--r-- 1 Toan staff 362 16 fév 23:13 network.xml
-rw-r--r-- 1 Toan staff 151525 5 fév 11:55 update.rcc
最佳答案
在构建项目时,将创建一个所谓的“应用程序 bundle 包”。这是带有.app
扩展名的目录。这就是macOS应用程序的实际含义。具有“.app”扩展名的目录。默认情况下,macOS finder不显示“.app”扩展名。例如,Safari应用程序仅显示为“Safari”,而不显示为“Safari.app”。
如果您的项目名为“MyApp”,则应用程序 bundle 包的名称将为“MyApp.app”。要使其在其他计算机上可用,您需要使用“macdeployqt”工具。这会将所有需要的Qt库复制到应用程序 bundle 包中。您从终端使用macdeployqt。
打开一个终端,并在您的项目的build目录中cd
。您将在此处找到应用程序的应用程序 bundle 包(在此示例中为MyApp.app。)按如下所示运行macdeployqt:
~/Qt/5.14.1/clang/bin/macdeployqt MyApp.app
切记使用与您用来构建项目的Qt版本一起提供的macdeployqt工具。在这种情况下5.14.1。假定您将Qt安装在默认位置,即主目录中的“Qt”文件夹。
该应用程序现在应该可以在任何macOS系统上运行了。为了更轻松地分发它,您可以使用“ditto”实用程序对其进行压缩。该工具是macOS的一部分:
ditto -v -c -k --sequesterRsrc --keepParent --zlibCompressionLevel 9 MyApp.app MyApp.zip
这将创建MyApp.zip,然后可以分发它。
但是,每次手动执行此操作都会很烦人。我要做的是在我的项目文件中创建一个自定义make目标。假设您正在为项目使用qmake。将此添加到您的.pro文件:
macx {
macdist.target = macdist
macdist.commands = \
rm -rf "$${TARGET}.app" \
&& rm -f "$${TARGET}.zip" \
&& "$$QMAKE_QMAKE" -config release "$$_PRO_FILE_" \
&& make clean \
&& make -j$$QMAKE_HOST.cpu_count \
&& "$$dirname(QMAKE_QMAKE)/macdeployqt" "$${TARGET}.app" \
&& ditto -v -c -k --sequesterRsrc --keepParent --zlibCompressionLevel 9 "$${TARGET}.app" "$${TARGET}.zip"
QMAKE_EXTRA_TARGETS += macdist
}
现在,您只需照常运行qmake(在Creator中,在菜单中选择“Build-> Run qmake”),然后在终端中进入build目录并执行以下操作:
make macdist
这将执行一个新的发行版本,在其上运行macdeployqt并将其打包为zip。
关于c++ - macOS上缺少Qt库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60496170/