macdeployqt не копирует плагины - PullRequest
3 голосов
/ 11 августа 2010

Я занимаюсь разработкой приложения на основе Qt, и когда я использую macdeployqt в комплекте, плагины Qt не копируются в пакет.

Однако, если я запускаю его второй раз, они есть. Кроме того, «плагин svg icon развертывается, если приложение использует модуль QtSvg». не заполнен - ​​мое приложение использует 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 Ответ

5 голосов
/ 11 августа 2010

Проблема заключается в строках 355-365 файла shared.cpp в источнике macdeployqt:

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/"
    }

Первое имя фреймворка / dylib в вашем пакете, в имени которого содержится «Qt», используется для определения пути к плагину. Так как первое имя фреймворка / dylib в моем пакете было «QtSolutions_QtSingleApplication-2.6» ... вы получите картину. Поэтому я полагаю, что обходной путь - переименовать dylib в «qsa-2.6.dylib» или что-то в этом роде.

В двух словах: убедитесь, что в именах ваших фреймворков и библиотек нет "Qt", иначе у вас возникнут проблемы с macdeployqt.

Надеюсь, этот ответ может помочь кому-то, имеющему ту же проблему.

...