我有多个源文件(让我们称之为file1.c,file2.c等),我想编译成单独的可执行文件。 makefile的相关部分:
file%.x: file%.o
$(CC) $(CFLAGS) $< -o $@
file%.o: file%.c
$(CC) $(CFLAGS) -c $< -o $@
我可以使用make file1.x
,make file2.x
等单独使用它们。我希望在makefile中有一个构建所有文件的目标。我尝试了一些东西,但它们没有用:
all: file*.x
和
all: file%.x
有一种简单的方法吗?提前谢谢。
答案 0 :(得分:1)
SOURCES := $(wildcard file*.c)
FILES := $(SOURCES:.c=.x)
all: $(FILES)
答案 1 :(得分:0)
这里奇怪的是你只是在构建一堆OBJECT文件。通常,目标文件将被用于链接在一起以形成可执行文件,因此您的默认规则是构建该可执行文件,这将构建它的任何依赖项。
如果你真的只想按照自己的方式去做,我会这样做:
FILES=test1 test2 test3
all: $(FILES:%=%.o)
$(FILES:%.o): %.c
$(CC) -o $@ $^
答案 2 :(得分:0)
我实际上回答了我自己的问题(在this question的答案的帮助下)。标记为“正确”的答案也有效。
all: $(addsuffix .x, $(basename $(wildcard file*.c))
感谢您的帮助。