2014-04-07 16 views
5

Sto cercando di generare un progetto ridistribuibile per Windows e Linux utilizzando CMake come sistema di configurazione del progetto e gcc-4.8/VS2012, oltre a librerie di terze parti aggiuntive come Qt5. Come posso creare un pacchetto con tutte le dipendenze necessarie e far funzionare il progetto su altre macchine, senza installare su quelle macchine i pacchetti richiesti (ad esempio l'installazione Qt5)?Generare un progetto ridistribuibile con CMake

EDIT

Googling pesantemente ho trovato QT5 richiede alcuni file e ho trovato questa discussione Application deployed with QT5 libraries does not start on Windows 7

che spiega le dipendenze QT5 richiesti.

+2

Su Windows lo faccio con i miei progetti basati su CMake nei miei script CMakeLists.txt. Voglio dire che ho uno script che raggruppa il corretto microsoft ridistribuibile e ho anche degli script cmake che raccolgono un elenco di ogni dll dipendente. Con questo elenco li aggiungo ai componenti nelle mie impostazioni cpack che generano un installer nsis. Detto questo, CMake ha un modulo bundleutilities che può fare qualcosa per te senza la necessità di scrivere script. Da quando ho già sviluppato i miei script anni fa, lo lascio com'è. – drescherjm

+0

@drescherjm: potresti condividere questo script? – madduci

+0

Vedrò cosa posso fare. Gli script contengono alcune macro che non sono ben descritte quindi dovrò documentarlo. – drescherjm

risposta

1

Normalmente, vorrei usare install per elencare i file desiderati e CPack per imballarli. Cioè, supponiamo mi piacerebbe creare un pacchetto costituito dai seguenti componenti:

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

(Disclaimer: io non sono Esperto di Qt quindi gli ultimi due file potrebbero non esistere affatto, ma tu hai l'idea.)

Dato che sia my_nifty_library e my_nifty_executable sono parte del progetto, si ha il controllo su di loro, così semplicemente effettuare le seguenti operazioni:

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

Ora, dal momento che Qt non sarà costruito come parte del progetto, vi consiglio usi il modulo ExternalProject.

Ora è possibile utilizzare CPack e creare, ad esempio, un programma di installazione NSIS o un file tar.gz dai file installati.

Problemi correlati