Frage

Ich frage mich, ob es ein nettes und nettes Tool gibt, das die GNU Autotools oder Make ersetzt, um ein sehr großes C++-Projekt zu erstellen, deren Verwendung so kompliziert ist.

Es ist einfach, alle Dateien zu generieren, die Autotools benötigt, wenn das Projekt klein ist, aber wenn der Quellcode in viele Verzeichnisse aufgeteilt ist, mit mehreren Bibliotheken von Drittanbietern und vielen Abhängigkeiten, geraten Sie in die „Autotools-Hölle“.

Vielen Dank für alle Empfehlungen

War es hilfreich?

Lösung

Die Google V8 JavaScript-Engine in C ++ geschrieben ist und verwendet SCons , also denke ich, dass eine Stimme für seine

.

Andere Tipps

CMake ? (Erzeugt Makefiles, so technisch keinen Ersatz als solche).

Ich habe auch vor kurzem in ein paar Stellen Pop-up " SCons " gesehen. Haben Sie nicht mit ihm erstellt etwas mich aber.

Hier finden Sie aktuelle waf .

Ich glaube, Sie es als vollwertiger Ersatz für Hersteller und Autotools berücksichtigen können. Es basiert auf Python. Eine Sache, die ich über waf mag, ist, dass das waf Skript selbst ist ~ 100 kb Standalone, die Sie in Ihrem Projekt Stammverzeichnis platzieren. Dies steht im Gegensatz zu machen oder Rechen und Freunden, wo das Build-System muss zuerst installiert werden. Sie haben müssen Python> = 2.3 obwohl installiert.

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

Waf Äquivalent zu Makefiles ist die wscript Datei. Es ist ein Python-Skript waf liest und definiert mindestens drei Funktionen: set_options(), configure(conf) und build(bld). Sie können erraten, was jeder von ihnen der Fall ist.

Um kurbeln, empfehle ich in den Demos / CPP / * Dateien in der Source-Distribution suchen. Werfen Sie auch einen Blick auf die doc / waf.pdf Datei; es ist ein 12-seitiges Dokument, das Sie schnell zum Laufen bekommt.

Für einen Vergleich der Geschwindigkeit der verschiedenen C ++ Tools erstellen, können Sie einen Blick auf diese Benchmark haben: http://retropaganda.info/~bohan/devel/wonderbuild/benchmarks/ time.xml

Wir verwenden Jam für ein komplexes C ++ Projekt - ein Vorteil ist, dass es schön Cross-Plattform ist. Anstatt mir die Vorteile Auslauf aus, haben nur einen kurzen Blick auf diesen Link: http://www.perforce.com/jam/jam.html

Noel Llopis hat ein paar Artikel geschrieben Systeme vergleichen bauen. Teil 1 von "The Quest for Perfect Build-System" ist unter http: //gamesfromwithin.com/the-quest-for-the-perfect-build-system . Teil 2 folgt auf dem gleichen Gelände. Eine Wiederholungs von Scons wird berichtet, unter http://gamesfromwithin.com/?p=104 .

Schlussfolgerungen:. SCons ist zu langsam ... Jam ist der Gewinner

Cook ist ein weiteres Werkzeug, das verwendet werden kann machen, um zu ersetzen. Ich habe mit ihm mehr großen Unternehmen gesehen. So ist es Unternehmen bereit, obwohl die Website sieht eher veraltet.

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

Ich habe mit SCons auf einem großen c ++ Projekt (auf Linux und Windows), und es funktioniert wirklich gut.

scons all -j8 (die Objektdateien parallel kompiliert) ist sehr cool!

Ich benutze bakefile für meinen Build-Prozess, und ich wurde ein großer Fan!

Ich habe nie mehr ein Makefile selbst zu schreiben, geschweige denn schrecklich GNU Autotools-Skripte. Alles, was ich tun muß, ist eine XML Datei zur Verfügung stellen, die die Build-Ziele beschreiben. Bakefile kann dies in ein Makefile umwandeln, die alle (Header-Datei) erhalten Abhängigkeiten rechts usw., wo verschiedene Makefile-Formate (Einfügen aus der Dokumentation die Liste) gewählt werden:

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

Normalerweise verwende ich die autoconf Option, und es schreibt die lästigen GNU Autotools-Skripte für mich. Ich hatte das configure.ac Skript anpassen, so dass configure auf jedem System eine bestimmte Bibliothek findet. Aber es war nicht so schlimm. Getting die autoconf Skripte auf diese Weise ist schön, weil ich sie alle von mir nicht zu schreiben, und wenn ich mein Projekt verteilen wird es aussehen, als ob ich sie geschrieben hatte, und die Benutzer können immer noch mein Projekt in der Gott- bauen gewichen, mit

./configure && make && make install
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top