Windows中循环的GNU makefile语法

时间:2019-06-02 22:47:54

标签: makefile gnu

我有一个为Linux操作系统编写的GNU makefile。我想在Windows上编译它,但是Windows有一些语法更改。我做了一些更改,但是在for循环语法上出现错误。

已经编写了文件代码,我必须对其进行修改才能在Windows OS上运行。附加了原始代码,并给出了我所做的更改 原始代码:

这是原始代码:

@for i in $(subdirs); do \ (cd $$i && $(MAKE) $@) || break; \ done

更改后:

# pass make directives to subdirectories
SHELL = sh
%:
    for f in $$(subdirs); \
    do \
      (cd $$i && $(MAKE) $@) || break; \
    done

# eof

我在第16行上得到了错误,这是for循环的第一行

GNUmakefile(16) : fatal error U1035: syntax error : expected ':' or '=' separator

1 个答案:

答案 0 :(得分:1)

阅读nmake语法后,我进行了某些更改。现在问题已解决。 %:不需要,并且@for不起作用。因此,我们需要使用@echo off来关闭echo:然后for循环将使用简单的'for'关键字而不是@for起作用。 工作代码在这里:

SHELL = sh
# %:
@echo off :
    for i in $(subdirs) ; \
    do \
    (cd $$i && $(MAKE) $@) || break; \
    done

# eof