2014-04-07 8 views
5

Ich suche nach einem weitervertreibbaren Projekt für Windows und Linux mit CMake als Projektkonfigurationssystem und gcc-4.8/VS2012, plus zusätzliche Third-Party-Bibliotheken wie Qt5. Wie kann ich ein Paket mit allen erforderlichen Abhängigkeiten erstellen und das Projekt auf anderen Maschinen laufen lassen, ohne die erforderlichen Pakete (d. H. Qt5-Setup) auf diesen Rechnern zu installieren?Erzeuge ein weiterverteilbares Projekt mit CMake

EDIT

stark googeln i QT5 gefunden habe erfordert einige Dateien und ich habe diese Diskussion Application deployed with QT5 libraries does not start on Windows 7

, die die erforderlichen QT5 Abhängigkeiten erklärt gefunden.

+2

Unter Windows mache ich dies mit meinen CMake-basierten Projekten in meinen CMakeLists.txt-Skripten. Ich meine, ich habe ein Skript, das die richtige Microsoft Redistributable bündelt und ich habe auch Cmake-Skripte, die eine Liste aller abhängigen DLL sammeln. Mit dieser Liste füge ich diese zu Komponenten in meinen cpack-Einstellungen hinzu, die ein nsis-Installationsprogramm erzeugen. Damit hat CMake ein bundelutilities-Modul, das einiges für Sie erledigen kann, ohne Skripte schreiben zu müssen. Da ich meine Skripte schon vor Jahren entwickelt habe, lasse ich es so wie es ist .. – drescherjm

+0

@drescherjm: Könnten Sie dieses Skript teilen? – madduci

+0

Ich werde sehen, was ich tun kann. Die Skripte enthalten ein paar Makros, die nicht gut beschrieben sind, also muss ich dies dokumentieren. – drescherjm

Antwort

1

Normalerweise würde ich install verwenden, um die gewünschten Dateien aufzulisten, und CPack, um sie zu verpacken. Das heißt, nehme ich ein Paket aus den folgenden Komponenten besteht erstellen möchten:

  • my_nifty_library.dll
  • my_nifty_executable.exe
  • QtCore.dll
  • QtGUI.dll

(Disclaimer: Ich bin nicht Qt-Experte so die letzten zwei Dateien möglicherweise überhaupt nicht existieren, aber Sie bekommen die Idee.)

Da beide my_nifty_library und my_nifty_executable Teil des Projekts sind, haben Sie die Kontrolle über sie, so einfach wie folgt vor:

install(TARGETS my_nifty_library my_nifty_executable 
     RUNTIME DESTINATION bin 
     LIBRARY DESTINATION lib 
     ARCHIVE DESTINATION lib) 

Jetzt, da Qt wird im Rahmen des Projekts nicht gebaut werden, schlage ich vor, Sie verwenden das Modul ExternalProject.

Jetzt können Sie CPack verwenden und sagen, ein NSIS-Installer oder ein tar.gz aus den installierten Dateien.

Verwandte Themen