CC = gcc CFLAGS = -g -Wall -lm ifeq ($(OS),Windows_NT) include makefile_windows.variables else UNAME = $(shell uname) ifeq ($(UNAME),Linux) include makefile_linux.variables else include makefile_mac.variables endif endif raylibfolder = ./raylib unityfolder = ./unity # -------------------------- # Initiales Programm bauen (zum ausprobieren) # -------------------------- doble_initial: $(CC) -o doble_initial $(BINARIES)/libdoble_complete.a # -------------------------- # Selbst implementiertes Programm bauen # -------------------------- program_obj_files = main.o stack.o bintree.o numbers.o timer.o highscore.o doble : $(program_obj_files) $(CC) $(CFLAGS) $^ -o doble # -------------------------- # Unit Tests # -------------------------- TEST_STACK_EXEC = runtest_stack.exe TEST_NUMBERS_EXEC = runtest_numbers.exe # NEU: Ausführbare Datei für numbers-Tests .PHONY: unitTests unitTests: $(TEST_STACK_EXEC) $(TEST_NUMBERS_EXEC) @echo "==========================================" @echo "--- Starte ALLE Unit Tests ---" @echo "==========================================" @echo "\n--- Starte Stack Unit Tests ---" @echo "Versuche auszuführen: $(TEST_STACK_EXEC)" $(TEST_STACK_EXEC) @echo "--- Stack Unit Tests abgeschlossen ---\n" @echo "--- Starte Numbers Unit Tests ---" @echo "Versuche auszuführen: $(TEST_NUMBERS_EXEC)" $(TEST_NUMBERS_EXEC) @echo "--- Numbers Unit Tests abgeschlossen ---" # --- Regeln für Stack-Tests (Unverändert) --- $(TEST_STACK_EXEC): test_stack.o stack.o $(CC) $(CFLAGS) -I$(unityfolder) test_stack.o stack.o $(unityfolder)/unity.c -o $@ $(BINARIES)/libdoble_complete.a test_stack.o: test_stack.c $(CC) -c $(CFLAGS) -I$(unityfolder) $< -o $@ # --- Regeln für Numbers-Tests (Nach Muster gebaut, ohne NUMBERS_TEST_OBJ) --- # Linken des Numbers-Test-Executables. Die Abhängigkeiten sind explizit gelistet. $(TEST_NUMBERS_EXEC): numbersTests.o numbers.o bintree.o stack.o # Linkt Test-Objekt, die Implementierung und Abhängigkeiten (bintree, stack) + Unity + Bibliothek $(CC) $(CFLAGS) -I$(unityfolder) numbersTests.o numbers.o bintree.o stack.o $(unityfolder)/unity.c -o $@ $(BINARIES)/libdoble_complete.a # Kompilierung der Numbers-Test-Datei. numbersTests.o: numbersTests.c $(CC) -c $(CFLAGS) -I$(unityfolder) $< -o $@ # -------------------------- # Generische Regel für .o-Dateien (Beibehalten) # -------------------------- %.o: %.c $(CC) -c $(CFLAGS) $< -o $@ # -------------------------- # Clean # -------------------------- clean: ifeq ($(OS),Windows_NT) del /f *.o *.exe doble $(TEST_STACK_EXEC) $(TEST_NUMBERS_EXEC) else rm -f *.o *.exe doble $(TEST_STACK_EXEC) $(TEST_NUMBERS_EXEC) endif # --- PHONY-Ziele am Ende (Erweitert und bereinigt) --- .PHONY: doble_initial doble unitTests $(TEST_STACK_EXEC) $(TEST_NUMBERS_EXEC) clean