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
Quindi alla fine ho deciso che la cosa migliore da fare era avviare un progetto CMAKE da zero. Il nostro progetto Jam è stato un tale casino, non volevo portare avanti il cruft dei nostri spaghetti build.
Ho trovato queste risorse per essere più utile
http://www.cmake.org/Wiki/CMake_Useful_Variables http://www.cmake.org/cmake/help/v2.8.10/cmake.html
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 ;
diventainclude_directories(a.h b.h c.h)
Main HelloWorld : main.cpp utils.cpp ;
diventaadd_executable(HelloWorld main.cpp utils.cpp utils.h)
Library helper : helper.cpp
diventaadd_library(helper STATIC helper.cpp helper.h)
SubDir foo ;
diventaadd_subdirectory(foo)
LinkLibraries HelloWorld : libhelper ;
diventatarget_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.
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).