改进 Makefile,使其仅创建和清理 changed/specifically 请求的程序

Improving Makefile so it only creates and cleans programs that have been changed/specifically requested

基于 this Whosebug 响应,我创建了一个 Makefile 将所有 .c 文件编译成单独的可执行文件。我添加了一个删除所有程序的 clean 部分。现在看起来像:

CFLAGS=-Wall -g

SRCS = $(wildcard *.c)

PROGS = $(patsubst %.c,%,$(SRCS))

all: $(PROGS)

clean:
    rm -f $(PROGS)

%: %.c
    $(CC) $(CFLAGS)  -o $@ $<

我的问题是:

  1. 如何让 Makefile 读取额外的命令行参数,以便它可以只清除指定的程序?

您可以添加一个 clean-% 只清除特定二进制文件或其他此类游戏的目标,但为什么呢?你的 "clean" 食谱只是 rm 所以只是 运行 rm 你自己。

至于仅构建特定的二进制文件 运行 make $binary 而不是 makemake all.

所有 make/make all 所做的就是 运行按名称为每个列出的二进制文件设置目标。