万能C语言makefile模板

万能makefile编译模板(带版本号)


#项目路径
INC_DIR = ../inc
LIB_DIR = ../lib
TAR_DIR = ../tar/

#目标
TARGET = mytar

#头文件
INCLUDE = -I$(INC_DIR) -I./ -I$(LIB_DIR)

#库 .a表示自己编译的库 -l后面的表示使用的其他库
LDFLAGS = $(LIB_DIR)/xxx.a  
LIBS =-lm -lpthread 

#编译器及编译选项 
CC = gcc
CSTRIP = strip
CFLAGS = -O2 -Wall -g -fpic

FILES = $(wildcard *.c)
OBJS = $(patsubst %.c,%.o,$(FILES))

#版本信息
VERSION_STRING := "4.0.1"
DATE_STRING := `date "+20%y.%m.%d %k:%M:%S"`
DESC := "名字描述"
EXT := " lilei" #扩展字段一般填入作者等其他不需要显示的信息如作者

RM = rm -f

$(TAR_DIR)/$(TARGET):auto_version.h $(OBJS)
	$(CC) -o $@ $^ $(INCLUDE) $(CFLAGS) $(LDFLAGS) $(LIBS) 
$(OBJS):%.o:%.c
	$(CC) -c $(INCLUDE) $(LIBS) $(CFLAGS) $< -o $@

#用来生成头文件 然后需要获取版本信息时直接获取宏定义对应的字符串就好了
auto_version.h:
	`touch auto_version.h`
	@echo "#define VER_AUTO 1" > auto_version.h                         	# > :覆盖文本原来内容
	@echo "#define V_NAME \"$(TARGET)\"" >> auto_version.h     				# >> :追加内容到文本末尾
	@echo "#define V_VERSION \"$(VERSION_STRING)\"" >> auto_version.h     	# >> :追加内容到文本末尾
	@echo "#define V_DATE \"$(DATE_STRING)\""	>> auto_version.h           # >> :追加内容到文本末尾
	@echo "#define V_EXT \"$(EXT)\""	>> auto_version.h           		# >> :追加内容到文本末尾
	@echo "#define V_DESC \"$(DESC)\""	>> auto_version.h           		# >> :追加内容到文本末尾

strip:
	-$(CSTRIP) $(CENTER_DIR)/$(TARGET)
clean:
	-$(RM) $(TARGET) $(OBJS) auto_version.h

万能makefile编译模板(不带版本号)

#项目路径
INC_DIR = ../inc
LIB_DIR = ../lib
TAR_DIR = ../tar/

#目标
TARGET = mytar

#头文件
INCLUDE = -I$(INC_DIR) -I./ -I$(LIB_DIR)

#库 .a表示自己编译的库 -l后面的表示使用的其他库
LDFLAGS = $(LIB_DIR)/xxx.a  
LIBS =-lm -lpthread 

#编译器及编译选项 
CC = gcc
CSTRIP = strip
CFLAGS = -O2 -Wall -g -fpic

FILES = $(wildcard *.c)
OBJS = $(patsubst %.c,%.o,$(FILES))

RM = rm -f

$(TAR_DIR)/$(TARGET):$(OBJS)
	$(CC) -o $@ $^ $(INCLUDE) $(CFLAGS) $(LDFLAGS) $(LIBS) 
$(OBJS):%.o:%.c
	$(CC) -c $(INCLUDE) $(LIBS) $(CFLAGS) $< -o $@

strip:
	-$(CSTRIP) $(CENTER_DIR)/$(TARGET)
clean:
	-$(RM) $(TARGET) $(OBJS)

编译库万能Makefile

######################################################################
# 驱动库Makefile
######################################################################

#头文件
INCLUDE = -I../inc -I./ -I../so_inc

#库
LDFLAGS = -L../lib
LIBS = 

#编译器及编译选项
CC = gcc
#CC = arm-linux-gcc
#AR = arm-linux-ar
CFLAGS = -Wall -O -c -fpic

#编译
.PHONY : all clean

all : $(patsubst %.c,%.a,$(wildcard *.c))

%.a : %.c
	$(CC) $(CFLAGS) $< $(INCLUDE) $(LDFLAGS) $(LIBS)
	$(AR) -rv $@ $(subst .c,.o,$<)

clean :
	rm -rf *.o *.a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值