改进 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 $@ $<
我的问题是:
- 如何让 Makefile 读取额外的命令行参数,以便它可以只清除指定的程序?
您可以添加一个 clean-%
只清除特定二进制文件或其他此类游戏的目标,但为什么呢?你的 "clean" 食谱只是 rm
所以只是 运行 rm
你自己。
至于仅构建特定的二进制文件 运行 make $binary
而不是 make
或 make all
.
所有 make
/make all
所做的就是 运行按名称为每个列出的二进制文件设置目标。
基于 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 $@ $<
我的问题是:
- 如何让 Makefile 读取额外的命令行参数,以便它可以只清除指定的程序?
您可以添加一个 clean-%
只清除特定二进制文件或其他此类游戏的目标,但为什么呢?你的 "clean" 食谱只是 rm
所以只是 运行 rm
你自己。
至于仅构建特定的二进制文件 运行 make $binary
而不是 make
或 make all
.
所有 make
/make all
所做的就是 运行按名称为每个列出的二进制文件设置目标。