gmake通配符函数未生成目标

时间:2019-06-26 16:44:05

标签: makefile gnu-make

我正在Windows和MinGW上使用gmake。这是makefile的片段:

SRCS = ..\path\to\srcs\*.c*
SRCS := $(wildcard $(SRCS))
OBJS := $(addsuffix .o,$(basename $(SRCS)))

$(OBJS) : $(SRCS)
    $(CC) $(FLGAS) $(INCLUDES) "$<"

我得到以下信息:

  

gmake:***没有目标。停止。

例如,如果我将SRCS定义为..\path\to\srcs\a.c,它将起作用。 我是否以正确的方式使用wildcard

我正在使用GNU Make 3.81

1 个答案:

答案 0 :(得分:1)

make不能很好地应对反斜线;您需要将其每个加倍,或者(更好)切换为正斜杠。

尽管如此,您的配方将覆盖从C文件创建目标文件的内置规则,而这些规则已损坏。 您的食谱声称,所有$(OBJS)都将来自具有所有$(SRCS)作为依赖项的单个编译中产生,但是只能读取第一个($< pro $^)。最好只是说出您想要什么,然后让make从那里拿走。

.PHONY: all
all: $(OBJS)
%.o: ../path/to/srcs/%.c