我在目录中有一堆C文件(每个文件的名称都以字符program
开头,例如program1.c
,program2.c
,program3.c
)和我打算将每个C文件编译成各自的二进制文件(program1
,program2
,program3
)。
如何编写Makefile
来实现此目的,以便我可以简单地发出make
来创建多个二进制文件? (使用循环而不是手动为每个c源文件声明一个make语句)
这是我的尝试: -
CFLAGS=-Wall -g
SRCS=$(wildcard program*.c)
all:
for F in *.c; do \
F=$${$$F.%c}; make $$F; done
clean:
rm -f program1
rm -f program2
rm -f program3
给了我一个bad subsitution
错误。
答案 0 :(得分:4)
PROGS := $(patsubst %.c,%,$(SRCS))
all: $(PROGS)
clean:
/bin/rm $(PROGS)
应该这样做。