Makefile - 为文件夹中的每个.c创建一个可执行文件

时间:2012-04-03 14:26:30

标签: c makefile

我的问题看似简单,但我已经失去了几个小时的学习试图找到解决方案。我正在尝试创建一个Makefile,为目录中的每个.c文件构建可执行文件。

我尝试了以下内容:

CC = gcc
SRCS = $(wildcard *.c)
OBJS = $(patsubst %.c,%.o,$(SRCS))

all: $(OBJS)
$(CC) $< -o $@

%.o: %.c
    $(CC) $(CPFLAGS)  -c  $<

但这样只会创建.o个文件,而不是任何可执行文件。我需要一个规则,为每个.o文件生成可执行文件。如下所示:

gcc src.o -o src

4 个答案:

答案 0 :(得分:6)

rob's回答似乎无法在我的机器上运行。也许,作为完整的Makefile:

SRCS = $(wildcard *.c)

all: $(SRCS:.c=)

.c:
     gcc $(CPFLAGS) $< -o $@

(最后两行,在我的机器上,不必要,因为默认规则是足够的。)

答案 1 :(得分:1)

您的all告诉它只是构建目标文件。添加类似

的内容

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

全部:$(EXEC)

答案 2 :(得分:1)

这是我用来编译一堆scheme文件的Makefile。

SRCS = $(wildcard *.scm)

all: $(SRCS:.scm=)

%: %.scm
    chicken-csc -o $@ $<

答案 3 :(得分:0)

尝试以下方法:

% : %.c
    $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $<
all: $(basename $(wildcard *.c))

,你甚至不需要前两行,因为make知道如何编译和链接.c文件到可执行文件。不过,通常需要更改make的内置配方。