c - 我无法理解所有 : ex1 in Makefile?(艰难地学习 C)

标签 c linux makefile

我正在学习 Learn C The Hard Way,在 Ex2 Extra Credit 中,他们要求您创建一个 all: ex1 目标,它将仅使用命令构建 ex1 制作

这是我创建的代码:

CFLAGS=-Wall -g

all: ex1

clean:
        rm -f ex1

有效。
当我从命令行运行 make 时,它会 make 生成 ex1 文件。当我运行 make clean 时,它会删除文件。

我不明白的是为什么:

all: ex1

不是:

all:
    make ex1

它从哪里得到 make 命令?我猜是命令行,但为什么 make clean 运行 rm -f ex1 而不是 make rm -f ex1 并失败。这对我来说似乎不一致。有人可以解释发生了什么吗?

最佳答案

名称all 不是固定的,它只是一个约定俗成的名称。 all: target 表示如果您调用它,make 将构建完成构建所需的所有内容。
所以本质上,您可以编写 make ex1,但是假设您有 100 个文件(ex1、ex2、ex3...),您不会想要键入 100 行,对吧?

all 通常也是 .PHONY目标。

关于c - 我无法理解所有 : ex1 in Makefile?(艰难地学习 C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34577209/

相关文章:

c - 与 Linux 中的设备对话。写功能

C - 内存对齐argv?

python - Windows 等效于此 Makefile

android - 使用 Android.mk 构建时缺少资源文件

c++ - ARM 与较旧的 glibc 交叉编译

c - 将linux C代码移植到windows

c++ - 在包装 C 库的 C++ 类中放入什么?

c - getpwnam_r() 是否需要可重入?

process - 我不明白 stdio 缓冲如何与子进程交互

comments - 变量赋值后的尾随注释颠覆比较