有没有办法使用GNU Make将目录中的所有C文件编译成单独的程序,每个程序都被命名为没有.c扩展名的源文件?
答案 0 :(得分:46)
SRCS = $(wildcard *.c)
PROGS = $(patsubst %.c,%,$(SRCS))
all: $(PROGS)
%: %.c
$(CC) $(CFLAGS) -o $@ $<
答案 1 :(得分:7)
我认为您甚至不需要makefile - 默认的隐式make规则应该这样做:
$ ls
src0.c src1.c src2.c src3.c
$ make `basename -s .c *`
cc src0.c -o src0
cc src1.c -o src1
cc src2.c -o src2
cc src3.c -o src3
编辑使命令行更简单。
答案 2 :(得分:4)
SRCS = $(wildcard *.c)
PROGS = $(patsubst %.c,%,$(SRCS))
all: $(PROGS)
%: %.c
$(CC) $(CFLAGS) -o $@ $<
clean:
rm -f $(PROGS)
通过添加&#34; clean&#34;来改善Martin Broadhurst的答案。目标。 &#34;干净&#34;将清理所有可执行文件。