GNU Makefile

Makefile 规则:

看个列子
foo.o : foo.c defs.h
cc -c -g foo.c
文件“foo.o”是规则需要重建的文件(目标文件)。文件“foo.o”是规则需要重建的文件(目标的依赖)
第二行“cc -c -g foo.c”是规则的“命令”

规则语法:

ARGETS : PREREQUISITES COMMAND
规则中“TARGETS”可以是空格分开的多个文件名,也可以是一个标签(例如:
执行清空的“clean”)

规则的中心思想是:目标文件的内容是由依赖文件文件决定,依赖文件的任何一处
改动,将导致目前已经存在的目标文件的内容过期

依赖):

对于这样的规则:A:B C,那么在构建目标 A 之前,首先需要完成对它的依赖文件 B 和 C 的构建

通配符):
rm -f *.o
wildcard函数):
objects := $(patsubst %.c,%.o,$(wildcard *.c))
       foo : $(objects) 
       cc -o foo $(objects)

~~~~wildcard :查找所有 .c的文件,patsubst :将所有的.c文件替换成.o后缀的文件

目录搜寻):

变量VPATH:
~~~~定义变量“VPATH”时,使用空格或者冒号(:)将多个需要搜索的目录分开
~~~~ VPATH = src:../headers
~~~~ 这样我们就为所有规则的依赖指定了两个搜索目录,“src”和“../headers”
变量vpath
~~~~vpath %.c foo
~~~~ vpath % blish
~~~~vpath %.c bar
~~~~ 表示对所有的.c 文件,make 依次查找目录:“foo”、blish”、“bar”
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 书写规则 规则包含两个部分,一个是依赖关系,一个是生成目标的方法。在Makefile中,规则的顺序是很重要的,因为...
    Stan_Z阅读 1,628评论 0 6
  • makefile关系到整个工程的编译规则,一个工程中的源文件不计其数,按其类型、功能、模块分别放在若干的目录当中,...
    Joe_HUST阅读 1,898评论 0 3
  • Makefile的规则 在讲述这个Makefile之前,还是让我们先来粗略地看一看Makefile的规则。 tar...
    小y同学hh阅读 576评论 0 0
  • 最近两天花时间读了一下陈皓老师的《跟我一起写Makefile》,这篇文章非常地详细地介绍了make的用法以及Mak...
    David栗子阅读 3,488评论 0 3
  • 来自陈浩的一片老文,但绝对营养。 示例工程:3 个头文件*.h,和 8 个 C 文件*.c。 初 编译过程,源文件...
    周筱鲁阅读 4,742评论 0 17