views:

163

answers:

2

Is there a way using GNU Make of compiling all of the C files in a directory into separate programs, with each program named as the source file without the .c extension?

+3  A: 
SRCS = $(wildcard *.c)

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

all: $(PROGS)

%: %.c

        $(CC) $(CFLAGS)  -o $@ $<
Martin Broadhurst
With the reminder that the final spacing is actually a tab.
Rizwan Kassim
+4  A: 

I don't think you even need a makefile - the default implicit make rules should do it:

$ 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

Edited to make the command line a little simpler.

Carl Norum