У меня есть цель в моем make-файле под названием «cambios», который делает cvs-фиксацию для каждого файла проекта (отдельно) и показывает последнюю ревизию.makefile: using for и ifneq
Теперь у меня есть вспомогательный shellscript, который это делает, но я хотел бы знать, как я могу это сделать в make-файле. Я создал объектный cambios2, который делает то же самое без вспомогательного shellscript, но имеет некоторые проблемы с синтаксисом.
Makefile:
(...)
TODO= makefile cambiosaux.sh lib/libreria.cc include/libreria.h src/principal.cc
(...)
cambios:
@./cambiosaux.sh "$(TODO)"
cambios2:
@for dir in $(TODO); do \
A = $(cvs commit -m "Incorporando cambios automáticamente." $$dir) \
ifneq ($(A),)
echo $dir ; \
echo "Última revisión:"$(echo $(A) | sed 's/.*new revision: //' | sed 's/;.*//') ; \
endif ; \
done
cambiosaux.sh:
for dir in $1
do
A=$(cvs commit -m "Incorporando cambios automáticamente." $dir)
if [ "$A" != "" ]; then
echo $dir
echo "Última revisión:"$(echo $A | sed 's/.*new revision: //' | sed 's/;.*//')
fi
done
Есть некоторые проблемы синтаксиса в объективном cambios2, но я действительно новый делать мейкфайлы, и я действительно не знаю, как решить эти проблемы.
Спасибо!
Вы слишком много думать. Команды для правила Makefile * являются * в sh. Просто скопируйте содержимое aux.sh в MF. –
Я пробовал, но это не работает, потому что это не тот же синтаксис ... – Motumbo