使用ONE Makefile从不同文件生成DIFFERENT可执行文件

时间:2013-04-07 18:21:38

标签: c makefile executable

我有三个用C语言编写的文件:

a.c, b.c, d.c

我想使用ONE 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 $@ $<
clean: 
    rm -f *.o

但我不知道,如何自定义它,以便它读取我的每个c文件并从它们中的每一个生成一个x文件。

谢谢

1 个答案:

答案 0 :(得分: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 $@ $<
clean: 
    rm -f *.o

编辑:要在目录中构建所有.c文件,请尝试

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

我对Make非常生疏所以这可能不太正确......你应该阅读Make文档。

编辑2:确实这不对......这更有可能奏效:

SRCS = *.c

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

或者

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

all: $PGMS