Makefile一些规则

一、Makefile 的规则
在讲述这个 Makefile 之前,还是让我们先来粗略地看一看Makefile 的规则。
target ... : prerequisites ...
command
...
...
target 也就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标
签(Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述。
prerequisites 就是,要生成那个target 所需要的文件或是目标。
command 也就是make 需要执行的命令。(任意的Shell 命令)
这是一个文件的依赖关系,也就是说,target 这一个或多个的目标文件依赖于prerequisites
中的文件,其生成规则定义在command 中。说白一点就是说,prerequisites 中如果有一个以
上的文件比target 文件要新的话,command 所定义的命令就会被执行。这就是Makefile 的
规则。也就是Makefile 中最核心的内容。

二、通过make命令即可执行Makefile或makefile文件。

三、在makefile中可以使用变量,其变量就是一个字符串,可以理解成C语言中的宏

  比如: object = main.o hello.o

  于是,我们就可以很方便地在我们的 makefile 中以“$(objects)”的方式来使用这个变量了,

四、makefile中的命令以tab按键开头

五、:= 这种方法,前面的变量不能使用后面的变量,只能使用前面已定义好了的变量。

六、还有一个比较有用的操作符是“?=”,先看示例:

  FOO ?= bar
  其含义是,如果 FOO 没有被定义过,那么变量FOO 的值就是“bar”,如果FOO 先前被定
  义过,那么这条语将什么也不做,其等价于:
  ifeq ($(origin FOO), undefined)
  FOO = bar
  endif

七、我们可以使用“+=”操作符给变量追加值,如:

  objects = main.o foo.o bar.o utils.o
  objects += another.o

原文地址:https://www.cnblogs.com/ruigelwang/p/12550227.html