GNU Make:“dir预计此刻不会”

时间:2016-07-06 13:36:07

标签: makefile gnu-make

我有一个包含以下行的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

有人可以告诉我出了什么问题吗?

1 个答案:

答案 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))