将目录中的所有C文件编译为单独的程序

时间:2010-04-24 20:45:44

标签: makefile gnu-make

有没有办法使用GNU Make将目录中的所有C文件编译成单独的程序,每个程序都被命名为没有.c扩展名的源文件?

3 个答案:

答案 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;将清理所有可执行文件。