2015-06-20 2 views
1

Я пытаюсь пропустить файлы .c в определенном каталоге через make-файл.Nested For loop в makefile

я использовал следующий код, но он, кажется, не работает:

DIR= Sources \ 
    Sources_2 

@for entry in ${DIR} ;     \ 
do           \ 
    @for i in $${entry}/*.c ;    \ 
    do          \ 
     echo "Processing $${i}";    \ 
     #Building Commands go here 
    done         \ 
done 

Я получаю сообщение об ошибке: "/ bin/ш: -c: строка 3: ошибка синтаксиса около неожиданной лексемы` сделать '"

ответ

0

Нельзя использовать при знаке @ рядом со вторым циклом for. @ следует использовать в начале всей команды оболочки. Для меня работало следующее:

DIR= Sources \ 
    Sources_2 

all: 
    @for entry in ${DIR};     \ 
    do          \ 
     for i in $${entry}/*.c;    \ 
     do         \ 
      echo "Processing $${i}";  \ 
     done        \ 
    done 
+0

Производит ошибку: *** отсутствует разделитель. Стоп. –

+0

@ user3438074 Это некоторая ошибка в файле Makefile, а не в сценарии оболочки. Я проверил код выше, и он полностью работает. –

+0

ОК, спасибо, Олег, я посмотрю, что не так в Makefile ... спасибо большое за помощь –

1

Изменение Makefile ниже

@for entry in ${DIR} ; do   \ 
    for i in $$entry/*.c ; do  \ 
     echo "Processing $$i";  \ 
     #Building Commands go here 
    done        \ 
done 

причина в том, неправильное использование синтаксиса for цикла.

+0

Проверьте обновленный ответ. Удалите фигурные скобки для 'entry' –

+0

Генерирует ошибку: *** отсутствует разделитель. Стоп –

+0

Показать весь 'Makefile', который вы используете –