2012-04-10 11 views
5

Capisco che Jam crea progetti esistenti e CMake genera progetti da costruire. Ma dato che preferirei generare progetti che potrei usare in vari IDE piuttosto che provare ad integrare Jam in quegli IDE, qualcuno ha avuto esperienza/successo nel trasformare un Jamfile in un file CMakeLists.txt?Migrazione da Jam a CMake

risposta

4

Ho usato Jam per tutti i miei progetti Linux poiché era più semplice dei normali makefile. Poi ho scoperto CMake e non sono tornato indietro. È quasi facile scrivere file CMakeLists.txt così come scrivere su Jamfiles e ottenere gratuitamente il supporto IDE specifico per piattaforma, anche se IMO i progetti IDE non sono così chiari come quelli generati a mano.

Da quello che ho visto, pochissime persone usano Jam in questi giorni, nonostante i suoi numerosi punti di forza. Sostiene di essere in grado di costruire su varie piattaforme, ma allo stesso tempo non sembra più godere dello sviluppo attivo, quindi tendo a diffidare delle sue affermazioni multipiattaforma.

Per quanto ne so, non esiste uno strumento per convertire automaticamente una gerarchia di Jamfiles in una gerarchia di file CMakeList.txt, sebbene tale strumento sarebbe certamente un progetto fattibile. Tuttavia, grazie all'impopolarità di Jam e, in misura minore, CMake, a meno che tu o io non trovino un po 'di tempo libero, un tale strumento non è all'orizzonte. :(

Se il progetto non è troppo complesso, un po 'semplice ricerca e sostituire le operazioni dovrebbero trasformare un Jamfile in un file CMakeLists.txt. Se il progetto è complesso, poi convertirli a mano è probabilmente la soluzione migliore.

Alcune trasformazioni semplici:

  • HDRS += a.h b.h c.h ; diventa include_directories(a.h b.h c.h)
  • Main HelloWorld : main.cpp utils.cpp ; diventa add_executable(HelloWorld main.cpp utils.cpp utils.h)
  • Library helper : helper.cpp diventa add_library(helper STATIC helper.cpp helper.h)
  • SubDir foo ; diventa add_subdirectory(foo)
  • LinkLibraries HelloWorld : libhelper ; diventa target_link_libraries(HelloWorld helper)

I progetti IDE che CMake genera Non includere automaticamente i file di intestazione relativi, quindi ho inserito in modo esplicito quelle importanti esempi precedenti. C'è un bell'esempio here, se non l'hai già visto.

1

Per la conversione da Jam a CMake, potrebbe essere utile provare a estendere vcproj2cmake anche a un'implementazione del parser di Jam (la parte del generatore per gli stream di testo della sintassi CMake ora è abbastanza capace).