【问题标题】:Qt Libraries Missing on macOSmacOS 上缺少 Qt 库
【发布时间】:2020-06-15 04:21:15
【问题描述】:

我正在使用 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

【问题讨论】:

  • 您在维护工具/安装程序中选择了哪些Qt版本?
  • 我安装了 Qt 5.14.1
  • 您的安装出现问题。您列出的文件夹中应该有一个子文件夹5.14.1。我唯一的想法是尝试重新安装。

标签: c++ macos qt


【解决方案1】:

当您构建项目时,会创建一个所谓的“应用程序包”。这是一个带有.app 扩展名的目录。这就是 macOS 应用程序的实际情况;具有“.app”扩展名的目录。默认情况下,macOS 查找器不显示“.app”扩展名。例如,Safari 应用程序仅显示为“Safari”,而不是“Safari.app”。

如果您的项目名为“MyApp”,则应用程序包的名称为“MyApp.app”。要使其在其他机器上可用,您需要使用“macdeployqt”工具。这会将所有需要的 Qt 库复制到应用程序包中。您从终端使用 macdeployqt。

打开终端并cd 进入项目的构建目录。您会在那里找到您的应用程序的应用程序包(本例中为 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”),然后在终端中进入构建目录并执行以下操作:

make macdist

这将执行一个全新的发布版本,在其上运行 macdeployqt 并将其打包成一个 zip。

【讨论】:

    猜你喜欢
    • 2020-05-13
    • 1970-01-01
    • 2014-01-09
    • 2018-03-01
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多