Domanda

Sono un utente molto frequente della GNU Autotools (principalmente Autoconf , occasionalmente Libtool ). Sto lavorando a un progetto in cui la portabilità sarà un punto critico. Tuttavia, il resto del team non si sente a proprio agio nel lavorare con m4 . Ho ricevuto questo nella mia casella di posta non da una, ma da quattro persone:

m4 NON è lisp, dannazione!

Comunque, forse qualcuno potrebbe raccomandare qualcosa basato su Python o PHP? Sto lavorando all'estremità C di un albero molto più grande; Posso essere sicuro che Python o PHP & nbsp; 5 saranno presenti, in quanto sono prerequisiti.

È stato utile?

Soluzione

Ho sentito cose positive su CMake che tenta di risolvere gli stessi problemi. Qui è l'articolo di Wikipedia

Altri suggerimenti

Sto correndo la possibilità di essere votato verso il basso ma, devo ammettere, che sfortunatamente non esiste un vero sostituto per gli autotools. CMake, SCons, bjam sono carini ma, quando si tratta di un lavoro serio ... è abbastanza chiaro che gli autotools sono superiori, non perché CMake non può fare la stessa cosa, ma perché è molto più difficile farlo con esso .

Ad esempio, CMake, l'alternativa più popolare agli autotools, presenta i seguenti svantaggi:

  • Nessun supporto di gettext. Questo potrebbe essere un vero problema quando devi gestire molte traduzioni e codice sorgente tradotto.
  • Nessun supporto per una destinazione di disinstallazione. È abbastanza spiacevole scoprire che non è possibile disinstallare il programma installato.
  • Nessuna compilazione automatica di librerie condivise e statiche .
  • La documentazione è molto limitata e negativa.

E così via.

Ci sono molti altri punti. Sfortunatamente, non esiste un vero sostituto di alta qualità per gli autotools. D'altra parte, se sviluppi su Windows e per Visual Studio, non puoi usare gli autotools e devi scegliere CMake che fornisce tali strumenti.

Ho avuto un buon successo con SCons . È costruito con Python e gli script di compilazione sono in realtà script Python stessi, il che conferisce una grande potenza espressiva. Dal sito web:

  

SCons è uno strumento di costruzione di software Open Source & # 8212; cioè uno strumento di generazione di prossima generazione. Pensa a SCons come a un sostituto multipiattaforma migliorato per la classica utility Make con funzionalità integrate simili a autoconf / automake e cache del compilatore come ccache . In breve, SCons è un modo più semplice, più affidabile e più veloce per creare software.

Esistono molti generatori di Makefile e sistemi alternativi alternativi disponibili:

Disponibile anche, ma non rigorosamente mirato su C / C ++:

  • Premake
  • Ant (per Java)
  • Rake (per Ruby)
  • (Sicuramente di più, semplicemente non li conosco tutti ...)

Ma dopo aver elencato tutti questi, gli autotools hanno il grande vantaggio di non richiedere altre dipendenze per l'utente finale. Uno script di configurazione viene generato una sola volta dallo sviluppatore e non richiede nulla di speciale sul lato utente, poiché è uno script di shell. Gli strumenti sopra elencati devono essere installati prima che chiunque possa costruire la tua fonte e potrebbero anche avere dipendenze da soli.

Che ne dici di usare semplicemente Make e pkg-config ?

Ecco un Modello di makefile per iniziare.

Meno è più gente.

Un'altra sostituzione automatica * - mk-configure . I documenti sono disponibili qui

Ho dato un'occhiata a CMake, che sembra una buona alternativa a meno che tu non stia eseguendo una compilazione incrociata. Se stai eseguendo una compilation nativa, dovresti provarla

Esiste una versione Python di make in fase di creazione su Mozilla - pymake - che presumibilmente supporta l'uso multipiattaforma.

Per la creazione di software C / C ++ da ANT o maven potresti essere interessato a terp . Include un'attività di compilatore C ++ portatile che funziona con molti compilatori C ++ su molte piattaforme.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top