qt - 为什么编译为 .so 的 Qt 插件在部署在 MacOSX bundle 中时不起作用?

标签 qt macos plugins cmake bundle

我有一个使用插件的基于 Qt 的应用程序的 CMake 项目。 创建插件的标准方法是 CMake(在所有平台上): ADD_LIBRARY(${PROJECT_NAME} 模块...) 这将创建一个 libxxx.so 插件(如果使用 SHARED 而不是上面的 MODULE,则不是 libxxx.dylib)。 现在,当在 Xcode 或 QtCreator 等 IDE 中运行时,应用程序可以正常工作,插件已加载并可以工作。 但是,如果我创建 .app bundle ,应用程序不会启动,并显示“libxxx.so 不是有效的 Qt 插件”!这怎么可能?也许找不到某些库依赖项,但我该如何检查呢?我已经使用了工具-L,我认为所有库都可以。

最佳答案

您的包中可能需要一个“qt.conf”文件来告诉 Qt 插件的位置。

您应该阅读 CMake 的 BundleUtilities fixup_bundle 函数,并让它为您完成所有“otool -L”和“install_name_tool”工作。

查看最近相关的 stackoverflow 问题和答案:

CMake: Copy Frameworks into App Bundle

关于qt - 为什么编译为 .so 的 Qt 插件在部署在 MacOSX bundle 中时不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6948487/

相关文章:

python - 无法在 OS X 10.10 Yosemite 上安装 Python-MySQL

java - Jenkins 无法启动并清空插件目录

qt - 使用注入(inject)代码和 QWidget::find(hwnd) 查找第 3 方 QWidget

c++ - Qt:如何在函数内显示消息框?

c++ - 将图标添加到工具栏中的 QAction

objective-c - NSScrollView 周围出现蓝色边框

objective-c - 在 macOS 上的另一个线程中设置线程的名称

c++ - QProgressDialog 在暂停期间不绘制

javascript - Sublime text 3 win 7 TernJS 和 tern_for_sublime 安装问题

plugins - 电子邮件 ext 插件用于通过邮件发送 HTML Junit 报告