#makefile #circular-dependency
#makefile #циклическая зависимость
Вопрос:
Make думает, что у меня циклическая зависимость:
$ make blah > /dev/null
make[1]: Circular all <- all dependency dropped.
Есть ли способ заставить make распечатать путь, по которому он является циклическим? Это очень большой и сложный Makefile, который я не писал, и я нахожу его почти бесполезным разбираться вручную.
Есть ли у людей какие-либо другие технологии для разрешения циклических зависимостей?
Спасибо.
Ответ №1:
make[1]: Circular all <- all
Хорошо, две вещи:
1) all <- all
означает, что это весь путь. Это верно, all
является обязательным условием all
.
2) make[1]
означает, что это рекурсивный Make. Где-то в вашем makefile есть команда $(MAKE) all
(вероятно, скрытая именами переменных, функциями, аргументами, чем угодно).
Помогает ли это?
Комментарии:
1. О, вау, с ума сойти, спасибо! В этом гораздо больше смысла. Я боюсь, что рекурсивный make будет находиться в сгенерированном Makefile, который будет невозможно прочитать, но это чертовски упростит поиск. Еще раз спасибо.