macdeployqt 不复制插件
Posted
技术标签:
【中文标题】macdeployqt 不复制插件【英文标题】:macdeployqt not copying plugins 【发布时间】:2010-08-10 22:31:38 【问题描述】:我正在开发一个基于 Qt 的应用程序,当我在包中使用 macdeployqt 时,Qt 插件不会复制到包中。
但是,如果我第二次运行它,它们就是。此外,“如果应用程序使用 QtSvg 模块,则部署 svg 图标插件。”未满 - 我的应用程序确实使用了 QtSvg,但未复制 iconengines/* 插件。
我尝试使用 -verbose=3 运行它,最后几行是:
Log: Created configuration file: "silverlock.app/Contents/Resources/qt.conf"
Log: This file sets the plugin search path to "silverlock.app/Contents/PlugIns"
从最后一条消息的内容来看,它似乎打算继续运行,但没有 - 几乎就像它崩溃了一样。
为什么会这样? macdeployqt 以前为我工作过没有问题。
使用:
Qt 4.6 Qt Creator 2.0 豹 10.5.8【问题讨论】:
【参考方案1】:问题出在 macdeployqt 源码中 shared.cpp 的第 355-365 行:
while (frameworks.isEmpty() == false)
const FrameworkInfo framework = frameworks.takeFirst();
copiedFrameworks.append(framework.frameworkName);
// Get the qt path from one of the Qt frameworks;
if (deploymenInfo.qtPath.isNull() && framework.frameworkName.contains("Qt")
&& framework.frameworkDirectory.contains("/lib"))
deploymenInfo.qtPath = framework.frameworkDirectory;
deploymenInfo.qtPath.chop(5); // remove "/lib/"
你的包中第一个带有“Qt”的框架/dylib名称被用来确定插件路径。由于我的包中的第一个框架/dylib 名称是“QtSolutions_QtSingleApplication-2.6”......你明白了。所以我想一个解决方法是将dylib重命名为“qsa-2.6.dylib”之类的。
简而言之:确保您的框架和库名称中没有“Qt”,否则您会遇到 macdeployqt 问题。
希望这个答案可以帮助遇到同样问题的人。
【讨论】:
Qt 5.2 也有同样的问题。解决了它,就像你建议的那样,通过从 lib 名称中删除 Qt,在 common.pri 中:QTSINGLEAPPLICATION_LIBNAME = $$qtLibraryTarget(Solutions_SingleApplication-head)以上是关于macdeployqt 不复制插件的主要内容,如果未能解决你的问题,请参考以下文章
ckeditor JS插件 在火狐下直接复制图片 就可以粘贴到文本框里 如何取消这个复制粘贴功能 ?在线等