Makefile全部命令

0 makefile

我正在学习c并设法使我的头在makefile周围。我正在努力学习C语言。

在练习2中,多余的信用声明要在我的Makefile中创建一个命令,该命令使我可以通过仅键入“ make”来编译.c文件。

我的makefile是:

CLAGS=-WALL -g

all: ex1

clean:
    rm ex1
Run Code Online (Sandbox Code Playgroud)

这有效-即键入make clean将删除ex1文件,然后键入make将ex1.c编译为可执行文件。

但是,我对为什么在clean命令中rm ex1必须在clean下面的行上缩进感到困惑,但是对于all命令,如果我在所有下面的行中缩进ex1,则会引发错误。为什么是这样?

我的另一个问题是-这个工作原理如何?难道所有的关键词都只是“键入make(不带命令)时执行此操作”吗?

任何帮助表示赞赏。

谢谢。

Bet*_*eta 5

这个:

clean:
    rm ex1
Run Code Online (Sandbox Code Playgroud)

是一个规则。这条规则只包含一个命令rm ex1。该命令是一个shell命令。规则中的每个命令都必须缩进一个TAB字符(否则Make会引起混淆)。

这个:

all: ex1
Run Code Online (Sandbox Code Playgroud)

是没有命令的规则。这里的“ ex1”不是命令,而是前提条件

这个:

all:
    ex1
Run Code Online (Sandbox Code Playgroud)

是无效规则,因为它包含无效命令;“ ex1”不是有效的shell命令。(如果您不相信我,请在命令行上尝试一下。)

如果执行Make时未指定目标(通过键入“ make”),则Make将使用默认目标,该目标通常是makefile中的第一个目标。(有一些例外情况您现在不必担心。)按照惯例,“全部”是规则的名称,它可以完成您想要执行的大部分操作,并且通常是默认目标。这是约定,不是Make内置的。