#Realize a common app makefile
#include(目录)
#lib(目录)
#source(目录)
#Makefile
#开发调试过程可能产生多个程序版本,可以在目标文件后(前)增加版本号标识。
VERSION =1.00
#Linux下为gcc/g++;arm下为arm-linux-gcc;不同CPU厂商提供的定制交叉编译器名称可能不同,如Hisilicon“arm-hisiv300-linux-gcc”。 CC = gcc
CC =gcc
#开发过程,特殊代码一般增加宏条件来选择是否编译,如调试打印输出代码。-D是标识,后面接着的是“宏”。 DEBUG =-DUSE_DEBUG
DEBUG =-DUSE_DEBUG
#可以指定编译条件,如显示警告(-Wall),优化等级(-O)。
CFLAGS =-Wall
#指定源文件目的路径,利用“wildcard”获取路径下所有依赖源文件。
SOURCES =$(wildcard ./source
#Realize a .so makefile
#.h .c
#Makefile
VERSION =1.0
CC =gcc
DEBUG =
CFLAGS =-fPIC -shared
LFLAGS =-fPIC -shared
SOURCES =$(wildcard *.c)
INCLUDES =-I.
LIB_NAMES =
LIB_PATH =
OBJ =$(patsubst %.c, %.o, $(SOURCES))
TARGET =libfun_so
#link
$(TARGET):$(OBJ)
@mkdir -p out
$(CC) $(OBJ) $(LIB_PATH) $(LIB_NAMES) $(LFLAGS) -o out/$(TARGET)$(VERSION).so
@rm -rf $(OBJ)
#compile
%.o: %.c
$(CC) $(INCLUDES) $(DEBUG) -c $(CFLAGS) $< -o $@
.PHONY:clean
clean:
@echo "Remove linked and compiled files......"
rm -rf $(OBJ) $(TARGET) out
#Realize a .a makefile
#.h .c
#Makefile
VERSION =1.0
CC =gcc
DEBUG =
CFLAGS =-Wall
AR =ar
ARFLAGS =rv
SOURCES =$(wildcard *.c)
INCLUDES =-I.
LIB_NAMES =
LIB_PATH =
OBJ =$(patsubst %.c, %.o, $(SOURCES))
TARGET =libfun_a
#link
$(TARGET):$(OBJ)
@mkdir -p out
$(AR) $(ARFLAGS) out/$(TARGET)$(VERSION).a $(OBJ)
@rm -rf $(OBJ)
#compile
%.o: %.c
$(CC) $(INCLUDES) $(DEBUG) -c $(CFLAGS) $< -o $@
.PHONY:clean
clean:
@echo "Remove linked and compiled files......"
rm -rf $(OBJ) $(TARGET) out