CMake MacOS X-Bundle mit BundleUtiliies für Qt-Anwendung
Ich bin ein CMake-Anfänger und habe ein Problem mit der Erstellung eines Qt-Anwendungspakets für MacOS X. Betrachten wir eine einfache Widget-App "helloworld" in nur einemmain.cpp
Datei
// main.cpp
#include <QApplication>
#include <QLabel>
int main(int argc, char** argv)
{
QApplication app(argc,argv);
QLabel lbl("Hello");
lbl.show();
return app.exec();
}
DasCMakeLists.txt
-Datei ist auch einfach.
# CMakeLists.txt
cmake_minimum_required( VERSION 3.0 )
project( QtBundle )
set( CMAKE_INCLUDE_CURRENT_DIR ON )
set( CMAKE_AUTOMOC ON )
set( SOURCES main.cpp )
find_package( Qt5Widgets REQUIRED )
add_executable( ${PROJECT_NAME} MACOSX_BUNDLE ${SOURCES} )
qt5_use_modules( ${PROJECT_NAME} Widgets )
Ich rennecmake .. -DCMAKE_PREFIX_PATH=/path/to/Qt5.5.1/
und es erzeugtMakefile
in dembuild
Verzeichnis
Dann laufe ichmake
und habenQtBundle.app
Verzeichnis wie ich wollte undQtBundle.app/Contents/MacOS/QtBundle
ausführbare Datei, OK.
Aber wenn ich es starte bekomme ich:
This application failed to start because it could not find or load the Qt platform plugin "cocoa".
Reinstalling the application may fix this problem.
Abort trap: 6
Soweit ich weiß, ist dieser Fehler aufgetreten, weil das Anwendungspaket keine Qt-Dateien (Framework-Bibliotheken und -Plugins) enthält. Deshalb führe ich @ aumacdeployqt
und es füllt Bundles-Verzeichnis mit vielen Dateien in Framework- und PlugIns-Ordnern und Anwendung ist Kann ausgeführt und auf ein anderes System verschoben werden.
Es löst teilweise das Problem, aberIch möchte das Bundle mit CMake und @ füll BundleUtilities und ohne macdeployqt tool.
Leider habe ich kein gutes und einfaches Beispiel für die Bereitstellung von Qt5 mit BundleUtilities gefunden.
Könnte mir jemand helfen, mein 'helloworld'-Beispiel so ändern, dass CMake automatisch ein einsatzbereites Bundle erstellt?
Danke im Voraus
Wichtigste Frage: Wie verwende ich CMake BundleUtilities, um eine verschiebbare Anwendung zu erhalten?