Это не ошибка make, поэтому другой информации нет.
Make запускает оболочку и дает оболочке ваш рецепт для вызова. Если оболочка завершается успешно (код выхода 0), то make предполагает, что команда, с которой она работала, работала. Если оболочка завершается с ошибкой (любой код выхода, кроме 0), то make предполагает, что команда, с которой она выполнила, завершилась неудачно. Make не знает , почему не удалось, make предполагает, что любая неудачная команда напечатает некоторую информацию о том, почему. Все, что знает make, это код завершения, так что все, что make может сказать вам:
make: *** [makefile:6: exe] Error 1
Это означает, что make запустил рецепт для цели exe
в makefile
строке номер 6, и эта команда завершена с код ошибки 1 (который не равен 0, следовательно, неисправен).
Почему это произошло? Давайте посмотрим на скрипт вашей оболочки:
for i in *; do [ -x "$$i" ] && echo "$$i"; done
Предположим, что последний файл соответствует *
(то есть в последний раз, когда мы go через l oop) файл не является исполняемым. Это означает, что тест последнего файла [ -x "$$i" ]
не пройден. Так как это последняя команда, запускаемая оболочкой до ее выхода, это будет код завершения оболочки, и у вас возникнет ошибка.
Вы должны быть уверены, что оболочка завершится успешно. Один из способов сделать это - убедиться, что последняя команда, выполняемая оболочкой, всегда успешна; может быть что-то вроде этого:
for i in *; do [ -x "$$i" ] && echo "$$i"; done; true