Рассмотрим следующее простое правило Makefile
target : objDir/target.o
(...recipe...)
objDir/target.o : target.c
(...recipe...)
Я хочу сгенерировать target.o
в специально выделенном каталоге.
Но этот рецепт не удастся. Потому что при вызове make target
он попытается сгенерировать оба значения objDir/target.o
И target.o
, а затем на этапе соединения произойдет сбой из-за дублирования символов.
Похоже, что target.o
является неявным зависимость, даже если она никогда не была указана в списке, и список не является пустым. target.o
может быть удовлетворено, поскольку target.c
существует в том же каталоге.
Так что я могу придумать несколько сложных способов избавиться от проблемы, переименовав исходный файл или изменив имя target, чтобы делегирование некоторому суб-Makefile началось из другого каталога, но ни один из них не чувствует себя удовлетворительным.
Вопрос в следующем: есть ли способ сказать make
НЕ принимать target.o
зависимость для target
target?