CC = gcc CFLAGS = -Wall -g -O0 LDFLAGS = -luuid # List of all source files (assuming they're all in the same directory) SRC_FILES = $(wildcard *.c) # Generate a list of object files by replacing the .c extension with .o OBJ_FILES = $(SRC_FILES:.c=.o) EXECUTABLE = "icscli" # linking $(EXECUTABLE): $(OBJ_FILES) gcc $(CFLAGS) $(OBJ_FILES) -o $(EXECUTABLE) $(LDFLAGS) main.o: main.c $(CC) $(CFLAGS) -c $< # use implicit rule to compile C source files to object files %.o: %.c %.h $(CC) $(CFLAGS) -c $< .PHONY:install install: $(EXECUTABLE) cp $(EXECUTABLE) /usr/local/bin/$(EXECUTABLE) .PHONY:clean clean: -rm -f $(EXECUTABLE) *.o .PHONY:uninstall uninstall: -rm /usr/local/bin/$(EXECUTABLE) .PHONY:test test: ./$(EXECUTABLE) @echo ./$(EXECUTABLE) -h @echo ../tests/run_tests.sh