【发布时间】:2019-12-02 15:46:50
【问题描述】:
我有一个makefile,它应该单独编译一个文件夹中的所有程序。 makefile 内容为:
SRCS = $(wildcard *.c)
PROGS = $(patsubst %.c,%,$(SRCS))
all: $(PROGS)
%: %.c
$(CC) $(CFLAGS) -o $@ $<
clean:
rm -f $(PROGS)
我的文件被命名为:
d744eb7b-350a-11e5-b84e-0242ac110011_2015-08-17_11:04:23.c
d746064f-350a-11e5-b84e-0242ac110011_2015-08-17_11:03:37.c
等等。
当我运行 makefile 时,它显示以下错误:
makefile:5: *** target pattern contains no '%'. Stop.
谁能告诉我什么是错的?感谢您的宝贵时间。
【问题讨论】:
-
问题在于您的长文件名中的冒号。似乎有办法逃避这些,但看起来确实有问题。你能改变点-C 文件名的结构吗?
-
我阅读了与@AProgrammer 相同的页面;可能可以解决这个问题,但它会非常糟糕,你的时间会花在弄清楚如何使用不同的文件名上。
-
我同意@SteveFriedl 的观点,特别是如果您希望在更新您的
make程序时保证它会继续工作,而不是使用替代程序。 -
AProgrammer, SteveFriedl 非常感谢您的投入。我不认为我会添加任何其他复杂性,因为到目前为止,我什至不知道 makefile 在这里是如何工作的(请向我解释一下?)。我只是要重命名所有文件。