2013-04-07 41 views
3

我已经写在C三个文件:使用一个Makefile中生成不同的文件不同的可执行

a.c, b.c, d.c 

我想使用一个Makefile以从中生成独立的可执行文件,如:

a.x, b.x d.x. 

他们不需要彼此运行。他们是完全不同的程序。

我知道,我可以写一个行编译他们中的每一个,就像这样:

gcc -Wall -Werror a.c -o a.x 
gcc -Wall -Werror b.c -o b.x 
gcc -Wall -Werror d.c -o d.x 

但是我正在寻找一个简单的解决方案,从文件的数目独立做到这一点,由于事实上,将来我会有很多这样的人。

我有一个原始的,看起来像这样:

CC = gcc 
CFLAGS = -g -Wall - Werror -03 
%.x:%.c 
    ${CC} {CFLAGS} -o [email protected] $< 
clean: 
    rm -f *.o 

但我不知道如何来定制它,这样它读取我的C-文件各一,并生成从X文件他们中的每一个。

感谢

+0

你可以尝试阅读'make'文档或任何使用它的许多指南可以在网上找到。 – 2013-04-07 18:30:43

回答

5

您是否尝试过加入

所有:a.x b.x c.x

在你的makefile前

all: a.x b.x c.x 

CC = gcc 
CFLAGS = -g -Wall - Werror -03 
%.x:%.c 
    ${CC} {CFLAGS} -o [email protected] $< 
clean: 
    rm -f *.o 

编辑:建目录下的所有.c文件,尝试

all: $(*.c:.c=.x) 

我在制作相当生疏所以这可能并不完全是正确的......你应该阅读制作文档。

编辑2:其实这是不正确的......这是更可能的工作:

SRCS = *.c 

all: $(SRCS:.c=.x) 

或者

SRCS = *.c 
PGMS = $(SRCS:.c=.x) 

all: $PGMS 
+0

谢谢,这个作品! 您是否知道解决方案,我不必输入可执行文件的所有名称? (我必须编译20个可执行文件!) 我希望Makefile只是采用c文件的名称并将其用于相应的x文件。 – 2013-04-07 19:03:44

+0

非常感谢! – 2013-04-07 19:17:15

+0

@DonJano我做了另一个编辑... – 2013-04-07 19:23:33

相关问题