diff --git a/Woche 10.md b/Woche 10.md index 71ca23f3632d8c78a52c2c789a623c5464f33cc7..746b59a5f9b7d54f351dd9d33714c1f764a31fe1 100644 --- a/Woche 10.md +++ b/Woche 10.md @@ -1,4 +1,4 @@ -# Software-Build-Systeme + # Software-Build-Systeme ## Vorlesung 01-17-2025 @@ -208,5 +208,55 @@ mkdir build && cd build cmake -G Ninja .. ninja ``` +#### Antwort: +Hier sind die Antworten zu den gestellten Aufgaben: + +### **Kompilieren mit gcc:** +Befehl: +```sh +gcc -o pythagoras main.c pythagoras.c -lm +./pythagoras +``` +**Ergebnis:** Das Programm fragt nach den Kathetenlängen und berechnet die Hypotenuse. + +### **Erstellen eines Build-Systems mit Make:** +Befehl: +```sh +make +./pythagoras +``` +**Ergebnis:** Make kompiliert das Programm automatisch gemäß `Makefile`. + +### **Erstellen eines Build-Systems mit CMake:** +Befehle: +```sh +mkdir build && cd build +cmake .. +make +./pythagoras +``` +**Ergebnis:** CMake generiert Makefiles und baut das Programm. + +### **Erstellen eines Build-Systems mit Ninja:** +Befehle: +```sh +mkdir build && cd build +cmake -G Ninja .. +ninja +./pythagoras +``` +**Ergebnis:** Ninja baut das Programm schneller als Make. + +### **Reflexion (Lerntagebuch):** +- **Schwierigkeiten:** + - Fehlerhafte Pfade bei `cmake ..` (muss im `build/`-Verzeichnis ausgeführt werden). + - Fehlende `-lm`-Option bei direktem `gcc`-Kompilieren. +- **Vergleich der Methoden:** + - **gcc**: Manuelle, einfache Methode, aber fehleranfällig. + - **Make**: Erleichtert den Prozess mit vordefinierten Regeln. + - **CMake**: Portabler für verschiedene Plattformen. + - **Ninja**: Schneller als Make, aber erfordert `CMakeLists.txt`. + +Hast du spezielle Fragen zu einem Schritt? --- \ No newline at end of file