diff --git a/Makefile b/Makefile index 420df07..41bc641 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,33 @@ -GLEW_LIBS=$(shell pkgconf glew --libs) -GLFW_LIBS=$(shell pkgconf glfw3 --libs) +# Detect OS +OS := $(shell uname) -cg1: src/main.c src/log.c src/shader.c - gcc -o cg1 $^ $(GLEW_LIBS) $(GLFW_LIBS) \ No newline at end of file +GLEW_LIBS := $(shell pkgconf --libs glew) +GLFW_LIBS := $(shell pkgconf --libs glfw3) + +# Set libraries for Linux +ifeq ($(OS), Linux) + OPENGL_LIB := -lGL +# Set libraries for Windows (MSYS2) +else + OPENGL_LIB := -lopengl32 +endif + +# Source files +SRC := src/main.c src/log.c src/shader.c + +# Output binary +OUT := cg1 + +# Compiler +CC := gcc + +# Build target +$(OUT): $(SRC) + $(CC) -o $(OUT) $(SRC) $(GLEW_LIBS) $(GLFW_LIBS) $(OPENGL_LIB) + +# Clean target +clean: + rm -f $(OUT) + +# mark phony targets +.PHONY: clean \ No newline at end of file diff --git a/README.md b/README.md index 5e7587d..003ade5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ Dieses Readme soll helfen, die Umgebung für die Computergrafik Übungen einzurichten. -**Merke:** Ich nutze [Meson](https://mesonbuild.com/) statt Make, somit wird `pkgconf` nicht benötigt, und Cross-Platform Entwicklung wird etwas erleichtert. +**Merke:** Ich nutze [Meson](https://mesonbuild.com/) statt Make, somit wird `pkgconf` nicht benötigt, und Cross-Platform Entwicklung wird etwas erleichtert. Diese Anleitung ist jedoch auch für Makefile Nutzer geeignet. Unter Linux ist das Bearbeiten der Aufgaben am einfachsten. Dieses Readme beschreibt aber auch Möglichkeiten, die Aufgaben unter Windows zu bearbeiten, sowie eine Anleitung für macOS. @@ -31,6 +31,11 @@ Meson und Ninja (wird für Meson benötigt) installieren sudo apt install meson ninja-build ``` +pkgconf installieren (wird für Make benötigt) +``` +sudo apt install pkgconf +``` + GLFW installieren ``` sudo apt install libglfw3 libglfw3-dev @@ -144,13 +149,28 @@ Der Code dieses Projekts ist außerdem darauf ausgelegt, dass die Datei aus dem Nach den oben beschriebenen Schritten sollte das Projekt kompiliert und ausgeführt werden können. +## Meson + ```bash -meson setup build -meson compile -C build +meson setup build # muss nur beim ersten Mal ausgeführt werden + +meson compile -C build # kompiliert das Projekt + +# Ausführen ./build/cg1 # linux ./build/cg1.exe # windows ``` +## Make + +```bash +make # kompiliert das Projekt + +# Ausführen +./cg1 # linux +./cg1.exe # windows +``` + # MacOS **Merke:** Da ich selber kein MacOS kann ich diese Schritte leider nicht replizieren. Diese Anleitung wurde geschrieben von Paul-Christoph Otte (Danke!), welcher 2024 dieses Modul belegt hat. Entsprechend wird hier *nicht* Meson genutzt.