跟我一起写Makefile学习笔记1——文件搜寻&伪目标&静态模式

来源:互联网 发布:韩顺平满汉楼数据库表 编辑:程序博客网 时间:2024/06/05 00:47

文件搜寻

依赖文件搜索可以指定路径告诉make来自动寻找:
  • VPATH=src : ../headers 不同目录用冒号隔开,Makefile所在当前目录永远是第一优先查找的【VPATH是变量】
  • vpath <pattern> <directories> 为符合pattern模式的文件指定搜索目录【vpath小写是关键字,另这里用%表示匹配若干字符,相当于perl中的*】

伪目标

Makefile伪目标 这篇文章讲的挺清楚的,总结一下其实就是

  • 在make <标签>时,如果Makefile目录下正好有个文件和标签重名,则make <标签>下的命令不会被执行。在标签前添加.PHONY:<标签>就可以解决此问题,如:

<span style="font-family:Microsoft YaHei;">.PHONY:cleanclean:#make clean -C ddfilerm -f test* *.o puzzle</span>

  • 使用伪目标来一次生成多个可执行程序
<pre name="code" class="html"><pre name="code" class="html"><pre name="code" class="cpp">all:test test1.PHONY:alltest:test.occ -o test test.otest1:test1.occ -o test1 test1.otest.o:test.ctest1.o:test1.c.PHONY:cleanclean:#make clean -C ddfilerm -f test* *.o puzzle

静态模式

静态模式将前面的多目标提供进一步便利,规则如下:

<目标集合>:<目标模式>:<依赖模式>

【tab键】command

举例:

objs = test test1$(objs):%:%.ccc -o $@ $<

等价于

<pre name="code" class="html">test:test.ccc -o test test.ctest1:test1.ccc -o test1 test1.c


解释:$@ $<是make的自动化变量,前者表示目标集合,后者表示依赖集合。



0 0
原创粉丝点击