Синтаксис make-файла GNU для цикла в Windows - PullRequest
2 голосов
/ 03 июня 2019

У меня есть make-файл GNU, написанный для операционной системы Linux.Я хочу скомпилировать его на Windows, но есть некоторые изменения синтаксиса для Windows.Я сделал некоторые изменения, но я получаю сообщение об ошибке для синтаксиса цикла.

Сделать код файла уже написано, и я должен изменить его для запуска на ОС Windows.Оригинальный код прилагается, и внесенные мной изменения также выдаются. Оригинальный код:

Это оригинальный код:

@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, которая является первой строкой цикла

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

1 Ответ

1 голос
/ 08 июня 2019

Я внес определенные изменения после прочтения синтаксиса nmake.Теперь проблема решена.%: Не нужен и @for не работает.Поэтому нам нужно отключить echo, используя @echo off: и цикл for будет работать с простым ключевым словом for вместо @for.Рабочий код здесь:

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

# eof
...