Sto prendendo la possibilità di essere downvoted ma, devo ammettere, che purtroppo non esiste un reale sostituto per gli autotools. CMake, SCons, bjam sono gentili ma, quando si tratta di lavorare seriamente ... è abbastanza chiaro che gli autotools sono superiori, non perché CMake non possa fare la stessa cosa, ma perché è molto più difficile farlo con esso .
Per esempio, CMake, l'alternativa più popolare al autotools, ha i seguenti inconvenienti:
- Nessun supporto di gettext. Questo potrebbe essere un problema reale quando devi gestire molte traduzioni e tradurre il codice sorgente.
- Nessun supporto per una destinazione di disinstallazione. È abbastanza spiacevole scoprire che non è possibile disinstallare il programma installato.
- Nessuna build automatica di entrambe le librerie condivise e statiche.
- La documentazione è molto limitata a.
E così via.
Ci sono molti altri punti. Sfortunatamente, non esiste un vero sostituto di alta qualità per gli autotools. D'altra parte, se si sviluppa su Windows e per Visual Studio, non è possibile utilizzare gli autotools e è necessario scegliere CMake che fornisce tali strumenti.
La familiarità con m4 è irrilevante. Discutere contro autoconf a causa di m4 è come discutere contro C perché il compilatore usa un lexer generato da lex e gli sviluppatori non capiscono lex. Quando si utilizzano gli autotools, è possibile ignorare completamente m4 il 98% delle volte. Nel restante 2%, puoi anche ignorare m4! Di solito, se ti trovi ad avere problemi relativi a m4 è perché stai facendo qualcosa di fondamentalmente sbagliato. –
@WilliamPursell dopo un paio di anni da quando ho chiesto questo, sono tendenzialmente d'accordo. Ma il problema rimane - È semplicemente troppo facile imboccare un percorso fondamentalmente sbagliato che lo usa. E, quando vuoi un controllo di costruzione davvero granulare da configurare, alla fine premi M4. A meno che non mi sia sfuggito qualcosa? –
@TimPost Ho dovuto affrontare un argomento simile anni fa. Nessuno voleva imparare M4 (o niente se poteva essere aiutato). Il progetto è diventato una combinazione di script bash e python, oltre a un'orribile app C++ che utilizzava principalmente le macro in stile C. Infine, dopo aver avuto l'autorità di asciarlo dopo 6 mesi che il sistema si è complicato in modo arbitrario (app per C++ che chiama python e script di shell tramite 'system (2)'), ho scambiato questo pasticcio con uno script M4 di 200 righe. Non arriverò mai ad accettare "non vogliamo impararlo" come scusa valida. – DevNull