Build-Systeme Teil 5: GNU Autotools



  • Eberhardt schrieb:

    interessanter Artikel.
    Aber ist es heutzutage überhaupt noch sinnvoll, in neuen Projekten, die Autotools zu verwenden? Ich denke ganz klar: nein!

    Das richtige Werkzeug für die richtige Aufgabe.

    Eberhardt schrieb:

    [*]braucht nur einen c++ Compiler, keine sonstigen Abhängigkeiten

    "nur"? Ein C++ Compilier ist schon eine ziemlich große Voraussetzung, meinst du nicht?

    Das einzige, was ein anderes Buildsystem bringen kann ist eine für die Konfiguration und das Build einheitliche Syntax und das Reduzieren von Abhängigkeiten. Wenn man ein Tool mit den Möglichkeiten der Autotools erstellen will, wird es genauso komplex, wie die Autotools selber.

    Wenn ein Buildsystem einfacher ist, werden einem selber bestimmte Freiheiten genommen, die man unter Umständen mit ziemlich viel Aufwand umgehem muss.

    Ich würde nicht generell sagen, dass die Autotools ausgedient haben.



  • Sehr guter Artikel! 👍
    Wurde auch Zeit, dass mal die GNU Autotools besprochen werden. Die sind einfach Standard unter UNIX.



  • Super Artikel!
    Eine der besten Einführungen in die autotools, die ich bisher gelesen habe. Hätte es die gegeben, als ich mich unlängst mit der Thematik beschäftigt habe, hätte mir das einige Stunden erspart.

    @Eberhardt
    cmake ist ja schon ganz cool, aber ist es wirklich auf allen Systemen so verfügbar wie die Autotools?



  • TheBigW@Work schrieb:

    @Eberhardt
    cmake ist ja schon ganz cool, aber ist es wirklich auf allen Systemen so verfügbar wie die Autotools?

    kommt darauf an wie du "so verfügbar" definierst. CMake gibt es für viele Plattformen: http://cmake.org/HTML/Download.html
    und spätestens mit KDE4 wird die Verfügbarkeit noch besser werden.

    ProgChild schrieb:

    "nur"? Ein C++ Compilier ist schon eine ziemlich große Voraussetzung, meinst du nicht?

    für die Autotools braucht man ja wohl auch einen c/c++ Compiler oder? Dafür muss man noch automake Version xy, etc. installieren 👎

    ProgChild schrieb:

    Wenn ein Buildsystem einfacher ist, werden einem selber bestimmte Freiheiten genommen, die man unter Umständen mit ziemlich viel Aufwand umgehem muss.

    ja, ist das richtig. Gerade Installer sind mit cmake nicht so einfach wie mit den autotools. Aber inzwischen gibt es eine große Auswahl an fertigen cmake Modulen, mit denen man sehr viel anstellen kann (wenn auch nicht soviel wie mit den autotools). Auf die Freiheiten verzichte ich gerne, wenn ich dafür einen einfachen Syntax, IDE Projektdatei-Generierung, kein Versionschaos etc. bekomme.



  • Eberhardt schrieb:

    ProgChild schrieb:

    "nur"? Ein C++ Compilier ist schon eine ziemlich große Voraussetzung, meinst du nicht?

    für die Autotools braucht man ja wohl auch einen c/c++ Compiler oder? Dafür muss man noch automake Version xy, etc. installieren 👎

    Ein C Compiler reicht, soweit ich weis. C != C++ 😉



  • Vielen Dank für diesen grandiosen Artikel! 👍
    Die GNU Autotools sind wohl mit das verfrickelste was mir bis jetzt untergekommen ist. 😮
    Ich steh' aber nunmal auf gefrickel! Habe aber nicht die Nerven mir die unzähligen infopages des "Autotools Book" anzutuen...

    Eine minimale Einführung, - und dann auch noch auf Deutsch! Genau das habe ich gesucht!
    Nachdem man deinen Artikel gelesen hat kann man die man-/infopages auch besser überfliegen da man ein recht präzises Bild davon hat was man eigentlich sucht. 💡



  • schöne übersicht über makefiles 👍
    eigentlich hasse ich diese dinge ja, aber manchmal braucht man die leider.
    ...und weil ich bestimmt mal wieder makefiles basteln muss, hab ich deinen artikel ge-bookmark-t 😉
    :xmas2:

    btw: vielleicht hat mal einer lust was über 'ant' zu schreiben?



  • @ten! Eh, gibts doch schon! Build-Systeme Teil 5 ist nicht umsonst Teil 5. Schau einfach mal ins Magazin-Verzeichnis:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-133193.html



  • Artchi schrieb:

    @ten! Eh, gibts doch schon! Build-Systeme Teil 5 ist nicht umsonst Teil 5. Schau einfach mal ins Magazin-Verzeichnis:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-133193.html

    danke, den hab ich voll übersehen...
    :xmas2:



  • Weis jemand zufällig, wie der Dateiname für make dist-* zusammengesetzt wird? Bei mir gibt#s da am Anfang ein überflüssiges '-' wodurch make dist-* nicht funktioniert

    configure.in

    #                                               -*- Autoconf -*-
    # Process this file with autoconf to produce a configure script.
    
    AC_PREREQ(2.61)
    AC_INIT("spaceshooter-sfml", 1.0pre, "bugs@coders-nemesis.eu")
    AM_INIT_AUTOMAKE
    AC_CONFIG_SRCDIR([Main.cpp])
    
    # Checks for programs.
    AC_PROG_CXX
    
    # Checks for libraries.
    
    # Checks for header files.
    AC_CHECK_HEADERS([libintl.h])
    
    # Checks for typedefs, structures, and compiler characteristics.
    AC_HEADER_STDBOOL
    AC_C_CONST
    AC_C_INLINE
    AC_TYPE_SIZE_T
    
    # Checks for library functions.
    AC_HEADER_STDC
    AC_CHECK_FUNCS([memset sqrt])
    
    AC_CONFIG_FILES([Makefile])
    AC_OUTPUT
    
    $ make dist-gzip
    { test ! -d -spaceshooter-sfml--1.0pre || { find -spaceshooter-sfml--1.0pre -type d ! -perm -200 -exec chmod u+w {} ';' && rm -fr -spaceshooter-sfml--1.0pre; }; }
    test -d -spaceshooter-sfml--1.0pre || mkdir -spaceshooter-sfml--1.0pre
    mkdir: Ungültige Option -- s
    „mkdir --help“ gibt weitere Informationen.
    make: *** [distdir] Fehler 1
    


  • darthdespotism schrieb:

    Weis jemand zufällig, wie der Dateiname für make dist-* zusammengesetzt wird? Bei mir gibt#s da am Anfang ein überflüssiges '-' wodurch make dist-* nicht funktioniert

    configure.in

    AC_INIT("spaceshooter-sfml", 1.0pre, "bugs@coders-nemesis.eu")
    

    Was sollen denn die Anführungszeichen da? Kann es sein, dass es daran liegt, dass die da nicht hingehören.

    Aber das hier ist bei Weitem weder der richtige Thread, noch das richtige Forum, um sowas zu fragen.



  • OK du hast wohl recht dass das hier Off-Topic ist, sorry.

    Deine Diagnose war richtig 😉 danke


Anmelden zum Antworten