Write a makefile to compile *.c and link to executable target
https://wenku.baidu.com/view/b1ec946027d3240c8447ef9a.html
GNU+make中文手册V3.8
<=========From Docs==============>
一般我们可以使用“$(wildcard *.c)”来获取工作目录下的所有的.c 文件列表。复
杂一些用法;可以使用“$(patsubst %.c,%.o,$(wildcard *.c))”,首先使用“wildcard”
函数获取工作目录下的.c 文件列表;之后将列表中所有文件名的后缀.c 替换为.o。这样
我们就可以得到在当前目录可生成的.o 文件列表。因此在一个目录下可以使用如下内
容的 Makefile 来将工作目录下的所有的.c 文件进行编译并最后连接成为一个可执行文
件:
#sample Makefile
objects := $(patsubst %.c,%.o,$(wildcard *.c))
foo : $(objects)
cc -o foo $(objects)
这里我们使用了make的隐含规则来编译.c的源文件。对变量的赋值也用到了一个
特殊的符号(:=)。关于变量定义可参考 6.2 两种变量定义 一节。函数“patsubst”可
参考 8.2 文本处理函数 一节
<--------------My Example ------>
#Settings for Ubuntu
CC=arm-none-eabi-gcc
LINK=arm-none-eabi-ar
TARGET=libSample-linaro.a
CCFLAG=-Dxxx=1 -DHHH -I ./
#Start Test!
allobjects := $(patsubst %.c,%.o,$(wildcard *.c))
$(TARGET): $(allobjects)
$(LINK) rcs $(TARGET) $(allobjects)
$(allobjects): %.o:%.c
$(CC) $(CCFLAG) -o $@ -c $<
clear:
rm -rf $(TARGET)
rm -rf $(allobjects)
#end Test