首页 > 解决方案 > gmake通配符函数不生成目标

问题描述

我在带有 MinGW 的 Windows 上使用 gmake。这是生成文件的片段:

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

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

我得到以下信息:

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

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

我正在使用GNU Make 3.81.

标签: makefilegnu-make

解决方案


make不能很好地处理反斜杠;您需要将每个加倍,或者(更好)切换到正斜杠。

但是,您的配方会覆盖用于从损坏的 C 文件创建目标文件的内置规则。您的配方声称所有内容都$(OBJS)将由具有所有$(SRCS)as 依赖项的单个编译生成,但仅读取第一个($<pro $^)。最好只说你想要什么,make然后从那里拿走它。

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

推荐阅读