我有一个使用插件的基于 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 问题和答案:
关于qt - 为什么编译为 .so 的 Qt 插件在部署在 MacOSX bundle 中时不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6948487/