CC = gcc CFLAGS = -g -Wall LIBS = -lm ifeq ($(OS),Windows_NT) include makefile_windows.variables RM_CMD = del /f EXT = .exe else UNAME = $(shell uname) ifeq ($(UNAME),Linux) include makefile_linux.variables else include makefile_mac.variables endif RM_CMD = rm -f EXT = endif raylibfolder = ./raylib unityfolder = ./unity # -------------------------- # Objekt-Dateien Definition # -------------------------- program_obj_files = stack.o bintree.o numbers.o timer.o highscore.o # main.o separat oder hier hinzufügen OBJ = main.o $(program_obj_files) # -------------------------- # Initiales Programm # -------------------------- doble_initial: # Hinweis: $(BINARIES) muss in den include-Dateien definiert sein! $(CC) -o doble_initial$(EXT) $(BINARIES)/libdoble_complete.a $(LIBS) # -------------------------- # Hauptprogramm (doble) # -------------------------- doble: $(OBJ) # WICHTIG: $(LIBS) ganz am Ende! $(CC) $(CFLAGS) $^ -o doble$(EXT) $(LIBS) %.o: %.c $(CC) -c $(CFLAGS) $< -o $@ # -------------------------- # Unit Tests # -------------------------- TEST_BIN = test_runner$(EXT) TEST_STACK_BIN = test_stack$(EXT) TEST_NUMBERS_BIN = test_numbers$(EXT) testStack: unittest.o stack.o unity/unity.o @echo "--- Baue und starte Stack Tests ---" $(CC) $(CFLAGS) unittest.o stack.o unity/unity.o -o $(TEST_STACK_BIN) $(LIBS) ./$(TEST_STACK_BIN) testNumbers: unittestTree.o numbers.o bintree.o stack.o unity/unity.o @echo "--- Baue und starte Numbers Tests ---" $(CC) $(CFLAGS) unittestTree.o numbers.o bintree.o stack.o unity/unity.o -o $(TEST_NUMBERS_BIN) $(LIBS) ./$(TEST_NUMBERS_BIN) unittest.o: test_stack.c $(CC) -c $(CFLAGS) test_stack.c -o unittest.o unittestTree.o: test_numbers.c $(CC) -c $(CFLAGS) test_numbers.c -o unittestTree.o unity/unity.o: unity/unity.c $(CC) -c $(CFLAGS) unity/unity.c -o unity/unity.o # -------------------------- # Clean # -------------------------- clean: $(RM_CMD) *.o doble$(EXT) doble_initial$(EXT) $(TEST_BIN)