macdeployqt non copiare i plugin
-
27-09-2019 - |
Domanda
Sto sviluppando un'applicazione Qt-based e quando uso macdeployqt sul fascio, i plugin Qt non vengono copiati al pacchetto.
Tuttavia, se l'eseguo una seconda volta, lo sono. Inoltre, "Il svg icona del plug-in viene distribuito se l'applicazione utilizza il modulo QtSvg." non è esaudito -. la mia applicazione fa uso QtSvg ma l'iconengines / * plugin non è copiato
Ho provato a farlo funzionare con verbose = 3, e le ultime righe coppia sono:
Log: Created configuration file: "silverlock.app/Contents/Resources/qt.conf"
Log: This file sets the plugin search path to "silverlock.app/Contents/PlugIns"
Da quello che dice l'ultimo messaggio, che tipo di sembra che intendeva continuare a correre, ma non lo fece -. Quasi come se fosse caduto
Perché succede questo? macdeployqt ha lavorato per me prima senza alcun problema.
Utilizzo:
- Qt 4.6
- Qt Creator 2.0
- Leopard 10.5.8
Soluzione
Il problema sta a linee 355-365 di shared.cpp nell'origine 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/"
}
Il primo nome quadro / dylib in bundle che ha "Qt" nel suo nome è preso per determinare il percorso plugin. Dal momento che il primo nome quadro / dylib nel mio fagotto era "QtSolutions_QtSingleApplication-2.6" ... si ottiene l'immagine. Quindi suppongo una soluzione è quella di rinominare il dylib a "QSA-2.6.dylib" o qualcosa del genere.
In poche parole: assicurarsi che il quadro e nomi di libreria non hanno "Qt" in loro o si incorrerà in problemi con macdeployqt
.Speriamo che questa risposta può aiutare qualcuno che ha lo stesso problema.