Qualsiasi buona costruzione di strumenti per un progetto C++, che può essere sostituita da fare?

StackOverflow https://stackoverflow.com/questions/54674

  •  09-06-2019
  •  | 
  •  

Domanda

mi chiedo se c'è qualche bello e pulito strumento per sostituire la GNU Autotools o Fare per costruire un grande progetto di C++, che sono una cosa complicata da usare.

È semplice per generare tutti i file che de Autotools richiede se il progetto è piccolo, ma se il codice sorgente è diviso in molte directory, con più librerie di terze parti e di molte dipendenze, si cade in "Autotools Inferno"..

grazie per eventuali consigli

È stato utile?

Soluzione

Il Google Motore JavaScript V8 è scritto in C++ ed utilizza SCons, quindi credo che un voto per questo.

Altri suggerimenti

CMake?(genera makefile, quindi tecnicamente non è una sostituzione in quanto tale).

Ho anche visto "SCons"pop-up in pochi luoghi di recente.Non ho creato nulla con me però.

Guarda waf.

Penso che si può considerare come un completo ricambio per marca e autotools.Esso è basato su python.Una cosa che mi piace di waf è che il waf script è ~100kb standalone che è posto nella vostra directory principale del progetto.Questo è in contrasto o rastrello e amici, dove il sistema di generazione deve essere installato per primo.Si deve avere python >=2.3 installato però.

~$ ./waf configure && ./waf && ./waf install

Waf è equivalente a Makefile è wscript file.È uno script python waf legge, e definisce almeno 3 funzioni: set_options(), configure(conf) e build(bld).Si può indovinare che cosa ciascuno di loro fa.

Per jumpstart, vi consiglio di guardare nel demo/cpp/* file sorgente e di distribuzione.Anche dare un'occhiata al doc/waf.pdf file;si tratta di un 12-pagina del documento che sarà presto ottenere installato e funzionante.

Per un confronto tra le velocità dei vari C++ costruire strumenti, si può avere uno sguardo a questo benchmark:http://retropaganda.info/~bohan/devel/wonderbuild/benchmarks/time.xml

Usiamo Jam per un complesso progetto di C++ - un vantaggio è che è ben cross-platform.Piuttosto che mi becco fuori i benefici, basta dare una rapida occhiata a questo link:http://www.perforce.com/jam/jam.html

Noel Llopis ha scritto un paio di articoli a confronto sistemi di compilazione.Parte 1 di "alla Ricerca Del Perfetto Sistema di generazione", è http://gamesfromwithin.com/the-quest-for-the-perfect-build-system.Parte 2 segue sul sito stesso.Una riprova di Scons è riferito a http://gamesfromwithin.com/?p=104.

Conclusioni:SCons è troppo lento ...Jam è il vincitore.

Cucinare è un altro strumento che può essere utilizzato per sostituire il fare.Ho visto diverse grandi aziende che lo utilizzano.Quindi, è pronto per le aziende anche se il sito sembra piuttosto datato.

http://miller.emu.id.au/pmiller/software/cook/

Ho con SCons su un grande progetto di c++ (sia su Linux che su Windows), e funziona davvero bene.

scons all -j8 (che riunisce i file oggetto in parallelo) è molto cool!

Io uso bakefile per il mio processo di generazione e sono diventato un grande fan!

Non ho mai scrivere un Makefile più me stesso, figuriamoci orribile GNU autotools script.Tutto quello che devo fare è fornire un' XML file che descrive la generazione di obiettivi.Bakefile può convertire questo in un Makefile che ottiene tutti i file di intestazione) dipendenze destra ecc, dove diversi Makefile formati possono essere scelti (incollando l'elenco da documentazione):

available formats are:
    autoconf      GNU autoconf Makefile.in files
    borland       Borland C/C++ makefiles
    dmars         Digital Mars makefiles
    dmars_smake   Digital Mars makefiles for SMAKE
    gnu           GNU toolchain makefiles (Unix)
    mingw         MinGW makefiles (mingw32-make)
    msevc4prj     MS eMbedded Visual C++ 4 project files
    msvc          MS Visual C++ nmake makefiles
    msvc6prj      MS Visual C++ 6.0 project files
    msvs2003prj   MS Visual Studio 2003 project files
    msvs2005prj   MS Visual Studio 2005 project files
    symbian       Symbian development files
    watcom        OpenWatcom makefiles
    xcode2        Xcode 2.4 project files

Io di solito uso il autoconf opzione, e scrive il fastidioso GNU autotools script per me.Ho dovuto adattare il configure.ac script, in modo che configurare trova una determinata libreria su qualsiasi sistema.Ma non era troppo male.Ottenere il autoconf script in questo modo è bello, perché io non li scrivo tutti io, e quando ho distribuire il mio progetto sarà come se avessi scritto di loro, e gli utenti possono ancora costruire il mio progetto che dio ci ha dato modo, con

./configure && make && make install
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top