make
makeってすごいなぁ。odawara的、今のMakefile。
debugとreleaseを引数で切り分け、フォルダに入れる。何も入れないときはどっちも。wildcardを使って強引にすべてのソースを対象にしてしまう。
# # Makefile # C_FLAGS += -Wall COMPILE.c = gcc $(C_FLAGS) -c LINK.c = gcc $(LD_FLAGS) TARGET = sample DBGTARGET = debug/$(TARGET)d RELTARGET = release/$(TARGET) DBGCFLAGS = -g -D__DEBUG RELCFLAGS = -O2 -fno-strict-aliasing SOURCES = $(wildcard *.c) HEADERS = $(wildcard *.h) DBGOBJFILES = $(SOURCES:%.c=debug/%.o) RELOBJFILES = $(SOURCES:%.c=release/%.o) .PHONY: clean debug release all: debug release release: $(RELTARGET) debug: $(DBGTARGET) $(RELTARGET): $(RELOBJFILES) $(LINK.c) -o $@ $^ $(RELLDFLAGS) $(DBGTARGET): $(DBGOBJFILES) $(LINK.c) -o $@ $^ $(DBGLDFLAGS) $(RELOBJFILES): release/%.o: %.c $(HEADERS) @mkdir -p release $(COMPILE.c) $(RELCFLAGS) -o $@ $< $(DBGOBJFILES): debug/%.o: %.c $(HEADERS) @mkdir -p debug $(COMPILE.c) $(DBGCFLAGS) -o $@ $< clean:: -$(RM) -rf release debug *~ *.d