質問

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作成者2.0
  • ヒョウ10.5.8
役に立ちましたか?

解決

問題は、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」でした。したがって、回避策は、ディリブを「QSA-2.6.dylib」などに変更することだと思います。

一言で言えば、フレームワークとライブラリ名に「QT」が含まれていないか、MacDeployqtの問題に遭遇しないようにしてください。

うまくいけば、この答えが同じ問題を抱えている人に役立つかもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top