CC=gcc LD=gcc CPPFLAGS=-g BUILD=build src=main.c objects=$(patsubst %.c,$(BUILD)/obj/%.o,$(src)) $(objects): | $(BUILD)/obj test:$(BUILD)/binary mkdir -p $@ ./$(BUILD)/binary test.binary >test/parse1.binary ./$(BUILD)/binary parse1.binary >test/parse2.binary diff test/parse1.binary test/parse2.binary $(BUILD)/binary: $(objects) @echo link objects $(objects) $(LD) $(LDFLAGS) $^ -o $@ $(BUILD)/obj: mkdir -p $@ $(BUILD)/obj/%.o: %.c @echo compile $< @$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ clean: rm -f $(objects) .PHONY:clean test