Я пытаюсь создать Makefile, вот что у меня есть до сих пор:
all :
for var in 1 2 3 4 5 6 7 8; do \
ifneq ("$(wildcard user0$(var).Z)","") \
//need to add something
echo "GNU sort does not exist! Exiting..."; \
else \
//some command \
endif \
done
Все файлы в каталоге имеют имена user01.x, user01.Y и т. д. Я хочу, чтобы «сделать все» имел такую функциональность: во-первых, если такой файл user0$(var).Z) не существует в текущем каталоге , выводит сообщение об ошибке, но выдает такую ошибку:
for var in 1 2 3 4 5 6 7 8; do \
ifneq ("","") \
echo "GNU sort does not exist! Exiting..."; \
else \
//some command \
endif \
done
/bin/sh: 2: Syntax error: word unexpected (expecting ")")
make: *** [all] Error 2
Я не знаю, почему подстановочный знак не работает. Кроме того, я хотел бы добавить еще одно условие, чтобы (некоторая команда) запускалась, если файл .Z старше, чем файл .X и .Y. (Все файлы находятся в текущем каталоге) Я знаю, что это тривиально, если я знаю все имена файлов заранее, и я мог бы просто жестко закодировать все имена файлов в Makefile, но как я предполагаю сделать это в цикле (который уже есть условие о том, существует ли файл .Z)?