makefile学习笔记(二):命令

 七、文件搜索

 1、vpath <pattern>; <directories>;
    为符合模式<pattern>;的文件指定搜索目录<directories>;。
    2、vpath <pattern>;
    清除符合模式<pattern>;的文件的搜索目录。
    3、vpath
    清除所有已被设置好了的文件搜索目录。

例如:
    vpath %.h ../headers
该语句表示,要求make在“../headers”目录下搜索所有以“.h”结尾的文件。(如果某文件在当前目录没有找到的话)

 八、静态模式

看一个例子:

 objects = foo.o bar.o

    all: $(objects)

      $(objects): %.o: %.c

            $(CC) -c $(CFLAGS) $< -o $@

等价于下面的规则:“$<”和“$@”则是自动化变量,“$<”表示所有的依赖目标集(也就是 “foo.c bar.c”),“$@”表示目标集(也就是“foo.o bar.o”)
    foo.o : foo.c
            $(CC) -c $(CFLAGS) foo.c -o foo.o
    bar.o : bar.c
            $(CC) -c $(CFLAGS) bar.c -o bar.o

再看一个例子:
    files = foo.elc bar.o lose.o
    $(filter %.o,$(files)): %.o: %.c
            $(CC) -c $(CFLAGS) $< -o $@
    $(filter %.elc,$(files)): %.elc: %.el
            emacs -f batch-byte-compile $<

等价于下面的规则:$(filter %.o,$(files))表示调用Makefile的filter函数,过滤“$filter”集,只要其中模式为“%.o”的内容。其的它内容,我就不用多说了吧。这个例字展示了Makefile中更大的弹性。
    bar.o : bar.c
            $(CC) -c $(CFLAGS) bar.c -o bar.o
    lose.o : lose.c
            $(CC) -c $(CFLAGS) lose.c -o lose.o

    foo.elc:foo.el

            emacs -f batch-byte-compile foo.el

猜你喜欢

转载自www.cnblogs.com/tjy1805099/p/12619771.html
今日推荐