万能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