代码之家  ›  专栏  ›  技术社区  ›  Jake Petroules

macdeployqt不复制插件

  •  3
  • Jake Petroules  · 技术社区  · 14 年前

    我正在开发一个基于Qt的应用程序,当我在bundle上使用macdeployqt时,Qt插件不会复制到bundle中。

    但是,如果我再运行一次,它们就是。此外,“如果应用程序使用QtSvg模块,则部署svg图标插件。”未完全填充-我的应用程序确实使用QtSvg,但不会复制iconengines/*插件。

    Log: Created configuration file: "silverlock.app/Contents/Resources/qt.conf" 
    Log: This file sets the plugin search path to "silverlock.app/Contents/PlugIns" 
    

    为什么会这样?macqt以前为我工作过,没有问题。

    • 夸脱4.6
    • Qt Creator 2.0版
    1 回复  |  直到 9 年前
        1
  •  5
  •   Jake Petroules    14 年前

    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\QtSingleApplication-2.6”。。。你明白了。所以我想一个解决方法是将dylib重命名为“qsa-2.6.dylib”或者别的什么。

    简而言之:确保框架和库名称中没有“Qt”,否则macdeployqt会出现问题。