2011-04-08 16 views
5

Sto passando da Plain Make a CMake come sistema di generazione per un progetto. Il progetto dovrebbe funzionare su diversi sistemi Linux incorporati, ognuno con una propria catena di strumenti e ha anche diverse opzioni di configurazione per target (ad esempio diverse definizioni di preprocessore e alcune fonti incluse/escluse). Dovrebbe funzionare anche su desktop Linux e alcuni moduli GUI devono essere eseguiti su Windows.CMake più toolchain e piattaforme di destinazione

Ora, CMake ha l'opzione CMAKE_TOOLCHAIN_FILE che può essere utilizzata per calcolare il toolchain e il materiale specifico del compilatore di ciascuna piattaforma incorporata (desktop Linux e Windows non dovrebbero averne bisogno).

Immagino che mettere altra roba diversa da quella elencata nello CMake Wiki all'interno del file toolchain non sia una buona idea.

Sto pensando di creare alcune variabili CMake che possono essere modificate dallo strumento cmake gui e quindi semplicemente usando if/elseif per determinare la corretta configurazione.

Qualcuno ha un suggerimento migliore o più elegante?

risposta

5

ho pensato che invece di utilizzare lunghi if/elseif/else blocchi si potrebbe semplicemente avere

include(flags-${CONFIGURATION_NAME}.cmake) 

nel mio CMakeLists.txt e le bandiere specifici per ogni configurazione sarebbe poi semplicemente da segnalare in file di bandiere appropriata.