gmake通配符函数不生成目标
gmake wildcard function not generating target
我在 Windows 上使用 MinGW 上的 gmake。这是 makefile 的片段:
SRCS = ..\path\to\srcs\*.c*
SRCS := $(wildcard $(SRCS))
OBJS := $(addsuffix .o,$(basename $(SRCS)))
$(OBJS) : $(SRCS)
$(CC) $(FLGAS) $(INCLUDES) "$<"
我得到以下信息:
gmake: *** No targets. Stop.
例如,如果我将 SRCS
定义为 ..\path\to\srcs\a.c
,它就可以工作。
我使用 wildcard
的方式是否正确?
我正在使用 GNU Make 3.81
。
make
不能很好地处理反斜杠;您需要将每个加倍,或者(更好)改用正斜杠。
不过,您的配方覆盖了 built-in 从 C 文件创建目标文件的规则,但有一个损坏的文件。
您的食谱声称所有 $(OBJS)
都将从一个编译中生成,该编译将所有 $(SRCS)
作为依赖项,但只读取第一个 ($<
pro $^
)。最好只说出你想要什么,然后让 make
从那里拿走它。
.PHONY: all
all: $(OBJS)
%.o: ../path/to/srcs/%.c
我在 Windows 上使用 MinGW 上的 gmake。这是 makefile 的片段:
SRCS = ..\path\to\srcs\*.c*
SRCS := $(wildcard $(SRCS))
OBJS := $(addsuffix .o,$(basename $(SRCS)))
$(OBJS) : $(SRCS)
$(CC) $(FLGAS) $(INCLUDES) "$<"
我得到以下信息:
gmake: *** No targets. Stop.
例如,如果我将 SRCS
定义为 ..\path\to\srcs\a.c
,它就可以工作。
我使用 wildcard
的方式是否正确?
我正在使用 GNU Make 3.81
。
make
不能很好地处理反斜杠;您需要将每个加倍,或者(更好)改用正斜杠。
不过,您的配方覆盖了 built-in 从 C 文件创建目标文件的规则,但有一个损坏的文件。
您的食谱声称所有 $(OBJS)
都将从一个编译中生成,该编译将所有 $(SRCS)
作为依赖项,但只读取第一个 ($<
pro $^
)。最好只说出你想要什么,然后让 make
从那里拿走它。
.PHONY: all
all: $(OBJS)
%.o: ../path/to/srcs/%.c