我正在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
。
答案 0 :(得分:1)
make
不能很好地应对反斜线;您需要将其每个加倍,或者(更好)切换为正斜杠。
尽管如此,您的配方将覆盖从C文件创建目标文件的内置规则,而这些规则已损坏。
您的食谱声称,所有$(OBJS)
都将来自具有所有$(SRCS)
作为依赖项的单个编译中产生,但是只能读取第一个($<
pro $^
)。最好只是说出您想要什么,然后让make
从那里拿走。
.PHONY: all
all: $(OBJS)
%.o: ../path/to/srcs/%.c