Makefile通用模板


VERSION 	=
#编译链如gcc或其他编译链
CC			=arm-linux-gnueabihf-gcc
AR			=ar
#rcs或rv
ARFLAGS     =rv
DEBUG 		=-g
#CFLAGS		=-Wall
#源文件
SOURCES	 	=$(wildcard *.c)
#需要指定的头文件
INCLUDES  	=-I./include
#需要链接的库文件
LIB_NAMES 	= -lm -ldl -lpthread 
#库文件路径
LIB_PATH 	=-L./
OBJ			=$(patsubst %.c, %.o, $(SOURCES))

STATIC_LIB = libmylib.a
SHARED_LIB = libmylib.so
TARGET		=test
 
# 可执行程序
$(TARGET):$(OBJ)
	$(CC) $(OBJ) $(LIB_PATH) $(LIB_NAMES) -o $(TARGET)$(VERSION)
	@rm -rf $(OBJ)
	
# 编译静态库
$(STATIC_LIB): mylib.o
	$(AR) $(ARFLAGS)  $(STATIC_LIB) $(OBJ)
	@rm -rf $(OBJ)
	
# 编译动态库
$(SHARED_LIB): mylib.o
	$(CC) -shared  -fPIC -o $(SHARED_LIB) $(OBJ)
	@rm -rf $(OBJ)
	
%.o: %.c
	$(CC) $(DEBUG) -c $(CFLAGS) $< -o $@
 
.PHONY:clean
clean:
	@echo "Remove linked and compiled files......"
	rm -rf $(OBJ) $(TARGET)$(VERSION)



评论 (0)

发表评论