makefile练习

主目录下的makefile

CC := gcc
SUBDIRS := lib src obj
BIN := main
PWD := $(shell pwd)
OBJS_DIR := $(PWD)/obj
BIN_DIR := $(PWD)/bin
export CC PWD BIN OBJS_DIR BIN_DIR


all : CHECK_DIR $(SUBDIRS)
CHECK_DIR :
	mkdir -p $(BIN_DIR)
	
$(SUBDIRS) : ECHO
	make -C $@
	
ECHO :
	@echo $(SUBDIRS)
	@echo begin complie
	
CLEAN :
	@rm -rf $(OBJS_DIR)/*.o
	@rm -rf $(BIN_DIR)
lib 目录下的makefile

AR := ar rc

LOCAL_SRC := $(wildcard *.c)
LOCAL_OBJ := $(patsubst %.c,%.o,$(LOCAL_SRC))
CFLAGS := -c
LIB := libxid.a

.PHONY : all

all : ECHO $(LIB) 

ECHO :
	@echo $(LOCAL_OBJ)
	

$(LIB) : $(LOCAL_OBJ)
	$(AR) $(LIB) $^
	#mv $(LIB) $(LIB_DIR)

$(LOCAL_OBJ) : $(LOCAL_SRC)
	$(CC) $(CFLAGS) $(LOCAL_SRC) -I$(INCLUDE_DIR) 
src目录下的makefile
CFLAGS = -c
LOCAL_SRC := $(wildcard *.c)
LOCAL_OBJ := $(patsubst %.c,%.o,$(LOCAL_SRC)) 

#$(BIN) : $(LOCAL_OBJ)
	#$(CC) $(CFLAGS) $(BIN) $(LOCAL_OBJ) -L$(LIB_DIR) -lxid

$(LOCAL_OBJ) : $(LOCAL_SRC)
	$(CC) $(CFLAGS) $(LOCAL_SRC) -I$(INCLUDE_DIR) -I$(LIB_DIR)
	-mv $(LOCAL_OBJ) $(OBJS_DIR)

clean :
	-rm -rf *.o
obj目录下的makefile
LOCAL_OBJ := $(wildcard *.o)
CFLAGS = -o

$(BIN) : $(LOCAL_OBJ)
	$(CC) $(CFLAGS) $@ $^ -L$(LIB_DIR) -lxid -lpthread
	-mv $(BIN) $(BIN_DIR) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值