MacDeployqtプラグインをコピーしていません
-
27-09-2019 - |
質問
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の問題に遭遇しないようにしてください。
うまくいけば、この答えが同じ問題を抱えている人に役立つかもしれません。
所属していません StackOverflow