makefile-模式规则与自动化变量

3. makefile 中的模式规则

在 makefile 的目标中可以使用 % 百分号来匹配文件名, % 可以匹配

任意长度的字符串,比如 %.c 可以匹配以.c结尾的文件

abc%.c 可以匹配以abc开头,以.c结尾的文件.

ex:

%.o : %.c

4. makefile 中的自动化变量

makefile 有很多自动化变量,自动化变量与模式规则一起可以实现自动化编译

下面是一些常见的自动化变量

$@ , 规则中目标的集合

$< , 依赖文件中的第一个文件,如果依赖文件是以模式( % )匹配的,那么 $< 就是符合模式的文件集合

$? , 所有比目标新的依赖目标的集合,以空格分开

$^ , 所有依赖文件的集合,以空格分开,如果依赖文件中存在多个重复文件会自动去重

$+ , 和 $^ 类似但不会去重

$* , 目标模式中 % 及之前的部分,如果目标是 abcdef.c , 目标模式是 abc%.c 那么这个变量的值是 abcdef

ex:

/*****************makefile 6*********************/

objects = main.o a.o b.o

TAG = main

main : $(objects)

gcc -o $(TAG) $(objects)

%.o : %.c

gcc -c $<

clean :

rm *.o $(TAG)

/************************************************/

在 makefile 6 中,定义了变量

objects = main.o a.o b.o

TAG = main

然后使用 %.o : %.c

gcc -c $<

去将所有的.c文件编译成.o文件

最终效果与makefile 1一样

你可能感兴趣的:(makefile-模式规则与自动化变量)