1.通配符
当你有一长串文件要制定时,为了简化此过程,make提供了通配符(wildcard),此功能也被称为文件名模式匹配。make
的通配符如同Bourne shell的~、*、?、[...]和[^...]。举例来说,*.*会被扩展成文件名中包含点号的所有文件,一个问号代表
任何单一字符,而[...]代表一个字符集。若要取得字符集的补集,则可以使用[^...]。
此外,“~”符号可以用来代表当前用户的主目录,一个“~”符号之后若跟着用户的名称则代表该用户的主目录。
2.假想工作目标
以工作目标充当标签来代表命令脚本,通常会有些用处。任何不代表文件的工作目标就叫做假想工作目标(phony target)。
另一个标准的假想工作目标称为clean:
clean:
rm -f *.o
通常,make总是会执行假想工作目标,因为对应于该规则的命令并不会创建以该工作目标为名称的文件。
切记,make无法区分文件形式的工作目标和假想工作目标,如果当前目录中刚好出现于假想工作目标同名的文件,make
将会在它的相依图中建立该文件与假想工作目标的关系。例如,运行make clean时,工作目录中刚好存在clean这个文件,
那么将会产生令人困惑的信息:
make clean
make:‘clean’ is up to date.
因为大多数的假想工作目标并未指定必要条件,clean工作目标总是被视为已经更新,所有相应的命令用于不会被执