gpt4 book ai didi

生成文件所有命令

转载 作者:行者123 更新时间:2023-12-05 00:49:58 26 4
gpt4 key购买 nike

我正在学习 c,并试图了解 makefile。我正在关注 Learn C the Hard way。

在练习 2 中,额外的功劳是在我的 makefile 中创建一个命令,允许我通过键入“make”来编译我的 .c 文件。

我的makefile是:

CLAGS=-WALL -g

all: ex1

clean:
rm ex1

这可行 - 即输入 make clean 删除 ex1 文件,输入 make 将 ex1.c 编译为可执行文件。

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

我的另一个问题是 - 这究竟是如何工作的? all 是否只是一个关键字,类似于“输入 make(没有命令)时,执行此操作”?

感谢任何帮助。

谢谢。

最佳答案

这个:

clean:
rm ex1

是一个规则。此规则包含单个 commandrm ex1。该命令是一个shell 命令。规则中的每个命令都必须缩进一个 TAB 字符(否则 Make 会混淆)。

这个:

all: ex1

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

这个:

all:
ex1

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

如果您在没有指定目标的情况下执行 Make(通过键入“make”),Make 将使用默认目标,这通常是 makefile 中的第一个目标。 (现在有一些异常(exception)情况您不必担心。)按照惯例,“all”是执行您想要完成的大部分操作的规则的名称,它通常是默认目标;这是一个约定,而不是 Make 内置的东西。

关于生成文件所有命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32813651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com