Makefile GNU-Make:“;dir此时不在预料之中”;
我有一个makefile,包括以下几行:Makefile GNU-Make:“;dir此时不在预料之中”;,makefile,gnu-make,Makefile,Gnu Make,我有一个makefile,包括以下几行: buildrepo: @$(call make-repo) define make-repo for dir in $(C_SRCS_DIR); \ do \ mkdir -p $(OBJDIR)/$$dir; \ done endef 在命令行中,使用$(C_SRCS_dir)中的dir命令\我收到以下错误消息: "dir not expected at this moment" make: *** [buildr
buildrepo:
@$(call make-repo)
define make-repo
for dir in $(C_SRCS_DIR); \
do \
mkdir -p $(OBJDIR)/$$dir; \
done
endef
在命令行中,使用$(C_SRCS_dir)中的dir命令\代码>我收到以下错误消息:
"dir not expected at this moment"
make: *** [buildrepo] Error 255
我正在使用gnumake
有谁能告诉我出了什么问题吗?实际上这是为。。。在里面做done
语句是Unix命令而不是GNU make命令,因此我猜您使用的是Windows机器(或任何其他机器)。你必须为你的系统找到等价物
但GNU make有一个foreach函数,其工作原理如下:
$(foreach dir,$(C_SRCS_DIR),mkdir -p $(OBJDIR)/$(dir);)
mkdir -p $(addprefix $(OBJDIR)/,$(C_SRCS_DIR))
还请注意,在您非常特殊的情况下(与GNU make无关,但与Windows相关),您可以创建所有dir,而无需for/foreach循环,如下所示:
$(foreach dir,$(C_SRCS_DIR),mkdir -p $(OBJDIR)/$(dir);)
mkdir -p $(addprefix $(OBJDIR)/,$(C_SRCS_DIR))
这是我的工作表格。
$(INFO SHELL=$(SHELL))
的输出是什么通常,即使$(addprefix)
不起作用,您仍然可以使用$(patsubst)
。