INC = -I./ TARGET = myprogram BASEDIR=./ OBJDIR=./obj/ SRCDIR=$(BASEDIR) SRCDIR+=$(shell ls -F $(BASEDIR) | grep "/") VPATH=$(SRCDIR) SOURCE=$(foreach subdir, ${SRCDIR}, $(wildcard ${subdir}*.c)) SRC=$(notdir $(SOURCE)) SRCOBJ=$(patsubst %.c,%.o,$(SRC)) OBJ=$(addprefix $(OBJDIR), $(SRCOBJ)) .PHONY:clean all: $(OBJDIR) $(TARGET) $(OBJDIR): @if [ ! -d $(OBJDIR) ]; then mkdir $(OBJDIR); fi $(OBJDIR)%.o: %.c gcc -c $< -o $@ $(INC) @echo Compile $< ... $@ $(TARGET): $(OBJ) gcc -L. -Bstatic -pthread $^ -o $(TARGET) $(INC) $(LIB) @echo Build... $(TARGET) install: @cp $(TARGET) ../bin clean: @$(RM) $(OUTPUT) $(OBJDIR) -rf @$(RM) $(TARGET) tar: ./install.sh