linux下make工具使用系列3

一、书写规则

规则包括两部分:依赖关系和生成方法。规则的顺序很重要,第一条规则的目标会被认为是唯一的最终目标。

二、通配符

make支持三个通配符:*、?、[……]
比如object=$(.o),则$(object)表示所有的.o的文件集合。

三、文件搜寻

1、可以设置一个轻级变量,make会到指定的目录中找文件,现在当前目录查找。
比如VPATH=src:../include
表示指定两个目录src和../include,“:”表示不同目录分隔符;

2、用vpath关键字,可以指定不同文件在不同搜索目录中
有3种使用方法
a: vpath [pattern ] [direction] ,表示为符合模式pattern的文件指定搜索目录,多个目录用空格或者冒号分隔;
b:vpath [pattern] ,表示清除符合模式pattern的文件搜索目录;
c:vapth ,表示清除所有已被设置好的文件搜索目录;

[pattern]需要使用“%”字符,表示匹配0或者多个字符,

vpath %.h ../headers

为.h的头文件指定搜索目录../headers

四、伪目标

伪目标不是一个文件,而是一个标签,“伪目标”的取名不能和文件名重名,使用.PHONY来指定一个目标为伪目标。
伪目标一般没有依赖文件,但如果想一个make生成多个目标可执行文件,则可以使用如下方式

.PHONY:all
all:prog1 prog2 prog3
prog1:prog1.c
    gcc -o prog1 prog1.c
prog2:prog2.c
    gcc -o prog2 prog2.c
prog3:prog3.c
    gcc -o prog3 prog3.c

则会生成3个可执行文件。

此外伪目标也可以依赖伪目标

.PHONY cleanall cleanobj cleandiff
cleanall:
    rm program
cleanobj:
    rm *.o
cleandif:
    rm *.diff

你可能感兴趣的:(linux,makefile)