Makefile写法之一

 


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

 

发表评论

滚动至顶部