我有一个包含以下行的makefile:
buildrepo:
@$(call make-repo)
define make-repo
for dir in $(C_SRCS_DIR); \
do \
mkdir -p $(OBJDIR)/$$dir; \
done
endef
在命令for dir in $(C_SRCS_DIR); \
的行上,我收到以下错误消息:
"dir not expected at this moment"
make: *** [buildrepo] Error 255
我正在使用GNU make
。
有人可以告诉我出了什么问题吗?
答案 0 :(得分:1)
实际上这个for ... in ... ; do ... done
语句是Unix命令而不是GNU make命令,因此我猜你使用的是Windows机器(或任何其他机器)。您必须找到系统的等效项。
但是GNU make有一个foreach函数,它的工作原理如下:
$(foreach dir,$(C_SRCS_DIR),mkdir -p $(OBJDIR)/$(dir);)
另请注意,在您的特定情况下(与GNU make无关,但与Windows无关),您可以创建所有dirs,而无需for / foreach循环,就像这样:
mkdir -p $(addprefix $(OBJDIR)/,$(C_SRCS_DIR))