cmake, kompilieren, linken, bauen, etc.



  • bin was das Zusammenspiel dieser Schritte angeht leider absolut unwissend.

    Vor allem wie man cmake korrekt handhabt ist für mich schwer zu durchschauen, vor allem weil es irgendwie auch schwer ist, tutorials oder geeignete Literatur darüber zu finden und cmake dauernd modernisiert wird.

    Unabdingbar ist dabei ja auch ein Verständnis von libraries, include directories usw.

    Habt ihr Ratschläge wie/wo ich mir das aneignen kann?



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (alle ISO-Standards) in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Mod

    Sewing schrieb:

    Habt ihr Ratschläge wie/wo ich mir das aneignen kann?

    Wie: Indem man es übt. Absolute Basis ist wohl, erst einmal alles ein paar mal selber von Hand durchzuspielen, damit man erkennt, wozu der ganze Zirkus überhaupt gut ist. Da fehlen dir offensichtlich gleich mehrere Erkenntnisschichten. Wie man ein Programm überhaupt baut ist die absolute Grundlage. Deine Frage nach Bibliotheken und Includepfade, etc. lässt ahnen, dass dir selbst dies noch fehlt.
    Wie man das Bauen von Programmen automatisiert ist die nächste Schicht, die dir wahrscheinlich komplett fehlt, da du nicht einmal danach fragst. Das sind Buildskripte für IDEs, Makefiles, etc.
    Und dann die Schicht darüber, auf der cmake lebt, wie man das schreiben der automatischen Buildskripte automatisiert. Wenn du nicht weißt was ein Buildskript ist oder wozu das gut ist, wirst du natürlich auch nicht einmal im Ansatz verstehen, wozu ein Buildautomatisierungssystem wie cmake überhaupt gut ist, geschweige denn, wie man es benutzt.

    Ich empfehle dir, mal unter Linux zu entwickeln und Software zu installieren. Von der Kommandozeile. Da sieht man viel besser, was unter der Haube abgeht. Da übersetzt du am besten mal ein paar eigene Programme, linkst sie selber, installierst sie selber. Damit lernst du die Grundlagenschicht, wie man überhaupt Software baut. Natürlich nicht nur Hello-World, sondern richtige Programme mit Abhängigkeiten.
    Dann installierst du mal ein paar fremde Softwarepakete. Nicht aus einem Paketmanager, sondern indem du den Quellcode runterlädst und die Buildanweisungen befolgst. So richtig mit configure, make, make install. Da sieht man, wie automatische Buildskripte funktionieren und was sie so tun.
    Und dann kannst du mal versuchen, selber so ein Paket zu schreiben.
    Und wenn du das hast, kannst du dir ja mal Gedanken machen, wie man so etwas wohl möglichst allgemein und plattformunabhängig machen könnte. Das ist es, wo cmake (oder seine Konkurrenten) ins Spiel kommen.

    Wo: Es bleibt dir nichts als das Internet. Wo sollte man sonst gucken? cmake ist leider nicht wirklich toll dokumentiert, aber auch nicht so schlecht, dass man nicht ausreichend Material dazu finden würde. Dito für die vorausgesetzten Grundlagen.



  • Ich weiß nicht, ob ich da mit SeppJ übereinstimme. Eher nicht.

    Ich will doch nur, dass mein Programm irgendwie kompiliert. Also gehe ich daher, suche mir ein Minimalbeispiel für eine CMakeLists.txt und passe die Datei irgendwie solange an meine Verhältnisse an, bis alles funktioniert. Immer, wenn ich irgendwas kompliziertes will, muss ich dann eben eine Suchmaschine anwerfen. Fertig. Denn sich richtig gut in CMake auszukennen ist, finde ich, gar nicht so unbedingt nötig.

    Die allergrundlegendsten Grundlagen sollte man natürlich haben, wozu cmake überhaupt gut ist.

    Eine Superkurzeinführung hat Jason Turner in einer seiner letzten Folgen gemacht: https://www.youtube.com/watch?v=HPMvU64RUTY&index=82&list=PLs3KjaCtOwSZ2tbuV1hx8Xz-rFZTan2J1



  • Vielen Dank euch, ich werde das beherzigen



  • CMake ist in meinen Augen (wenn man sich ein Tool aussuchen kann) kein guter Kandidat. Da die kostenlose Doku nicht gut bzw. ausreichend ist, da man von der Firma das Buch kaufen soll (was aber legitim ist). Aber auch die Syntax/Scriptsprache ist sehr unschön (diplomatisch ausgesprochen). Ich bin kein Fan von CMake.

    Den Hinweis von SeppJ kann ich zustimmen: man kann ja einfach mal ein Hello-World-Programm in der Kommando-Zeile ohne Build-Tool bauen. Dafür braucht man aber kein Linux aufsetzen, wenn man Windows-User ist. Denn den MSVC-Compiler kann man natürlich auch in der Kommandozeile bedienen. Weiterhin kann man auch MinGW oder Cygwin unter Windows installieren, wenns GNU/Linux-Like sein soll.

    Dann würde ich mal ein kleines Projekt mit make bauen, bzw. mit dem Derivat des entsprechenden Compilers: GCC ist es gmake und bei MSVC ist es nmake.

    Das kann man alles an einem Nachmittag machen.

    Und dann kann man sich CMake anschauen.



  • Ist vielleicht auch eine Frage des Kennenlernens. Ich habe nie selbst irgendwas mit "configure" gemacht, daher kann ich nicht so ganz nachvollziehen, dass man sich das angucken soll. Und ich habe mal versucht, mir ein Makefile selbst zu schreiben. Beim clean:-target was falsch gemacht, und schon hat das "make clean" auch Quellcode gelöscht. Nee. Nee wieder in-source-builds. Außerdem ist es doch egal, ob man nun make oder cmake lernt. Nicht, dass ich cmake stark loben möchte (habe schon öfter mal länger googlen müssen), aber es war zum Beispiel supersimpel CPack zu includen und aus meinem Programm ein .deb oder ein .rpm zu basteln - ohne dass ich groß was über die beiden Formate hätte wissen müssen. Außerdem ist dann die Ausgabe von "make" farbig. Das ist das Totschlagargument für mich 😉


Log in to reply