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(不带命令)时执行此操作”吗?
任何帮助表示赞赏。
谢谢。
这个:
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内置的。