Sto cercando di iniziare un nuovo progetto in C ++ - solo ai miei tempi inizialmente - e sto studiando i sistemi di build disponibili. Sembrerebbe che la risposta sia "Molti, e sono tutti orribili".
Le caratteristiche di cui ho specificamente bisogno per questo sono:
- Supporto per C ++ 11
- Cross platform (Linux come obiettivo principale, ma in grado di basarsi anche su Windows)
- Supporto per test unitari decenti
- Supporto per più moduli per la separazione del codice
- Supporto per la generazione di codice (utilizzando asn1c o protobuf - non ancora sicuro al 100%)
- Facile da mantenere
Ora, so di poter fare 1-4 di quelli che usano CMake e Autotools abbastanza facilmente. Probabilmente anche con SCons e Waf e anche gli altri. Il problema è che non ho mai capito come fare correttamente la generazione del codice usando loro - ovvero i file di origine che non esistono fino alla prima esecuzione del processo di compilazione, quindi i file di origine che il sistema di compilazione deve essere in grado di convertire in codice eseguibile ma in realtà non lo sa fino a quando non inizia la compilazione ... (ASN1C in particolare genera dozzine di file di intestazione e sorgente che devono essere in grado di lavorare insieme, e il set effettivo di file generato dipende dal contenuto del tuo file asn) anche il fatto che nessuno di questi è particolarmente facile da mantenere: CMake e Autotools hanno il loro enorme set di script che devi gestire affinché funzionino,
Quindi - quali sistemi di build sono consigliati per qualcosa del genere? O sarò bloccato con make files e script di shell per ora?