了解制定规则

时间:2018-03-05 20:55:31

标签: makefile gnu-make

这是我在网上找到的一个例子

all: test

test: test.c
    gcc test.c -o test

我理解test.c是先决条件,但由于test.c没有定义路径,这是否意味着test.c应该在当前目录中?< / p>

1 个答案:

答案 0 :(得分:1)

你的问题的答案,是的,已经回答@Rafael。

test.c应该在当前目录中,否则最终会出错。

我正在添加更多教学信息以了解基本的Makefile。

这是简单的makefile外观,Introduction makefile

target … : prerequisites …
        recipe
        …
        …
  1. 目标是程序生成的文件的名称,它也可以是清除等操作的名称。

  2. 先决条件是用作创建目标的输入的文件。目标通常取决于几个文件。

  3. 配方是make执行的操作。一个配方可能有多个命令,可以在同一行上,也可以在各自的行上。请注意:您需要在每个食谱行的开头添加制表符

  4. 更高级的内容,Writing recipes with directory search.

    当通过目录搜索在另一个目录中找到先决条件时,这不能改变规则的配方;他们将按照书面执行。因此,您必须小心编写配方,以便在make找到它的目录中查找先决条件。

    $ ^:Automatic variables

    foo.o : foo.c
            cc -c $(CFLAGS) $^ -o $@