C++ macdeployqt不复制插件
我正在开发一个基于Qt的应用程序,当我在bundle上使用macdeployqt时,Qt插件不会复制到bundle中 但是,如果我再次运行它,它们是。此外,“如果应用程序使用QtSvg模块,则部署svg图标插件。”未完全填充-我的应用程序确实使用QtSvg,但未复制IConeEngines/*插件 我尝试使用-verbose=3运行它,最后几行是:C++ macdeployqt不复制插件,c++,macos,qt,macdeployqt,C++,Macos,Qt,Macdeployqt,我正在开发一个基于Qt的应用程序,当我在bundle上使用macdeployqt时,Qt插件不会复制到bundle中 但是,如果我再次运行它,它们是。此外,“如果应用程序使用QtSvg模块,则部署svg图标插件。”未完全填充-我的应用程序确实使用QtSvg,但未复制IConeEngines/*插件 我尝试使用-verbose=3运行它,最后几行是: Log: Created configuration file: "silverlock.app/Contents/Resources/qt.con
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
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/"
}
bundle中第一个名为“Qt”的framework/dylib名称用于确定插件路径。因为我包中的第一个framework/dylib名称是“QtSolutions\u QtSingleApplication-2.6”。。。你明白了。所以我想一个解决办法是将动态库重命名为“qsa-2.6.dylib”或其他什么
简而言之:确保您的框架和库名称中没有“Qt”,否则您将在macdeployqt中遇到问题
希望这个答案能帮助有同样问题的人。Qt5.2也有同样的问题。正如您所建议的,通过从库名称中删除Qt解决了这个问题。pri:QTSINGLEAPPLICATION\u LIBNAME=$$qtLibraryTarget(Solutions\u SingleApplication-head)