Как правильно подключать make-файл из одной директории к make-файлу из другой?

Здравствуйте! У меня появилось недопонимание: есть каталог "/a/aa". В каталоге а есть мейкфайл-Makefile_a, в подкаталоге аа Makefile_aa. Я не могу понять вот что, зачем с помощью инклуда в Makefile_a указывать путь к Makefile_aa, и во втором указывать тоже путь к файлам как будто это делаеться из Makefile_a? Какая то тавтология получается! Как этого избежать?
Вот код Makefile_a:
var=main.o core.o general.o

dns_server: $(var)
        cc -o dns_server $(var)
main.o:main.c header.h
include aa/Makefile_aa

А это Makefile_aa:
core.o:aa/core.c aa/header_core.h
        cc -c -o core.o aa/core.c
  • Вопрос задан
  • 354 просмотра
Решения вопроса 1
@res2001
Developer, ex-admin
При включении с помощью include так и делают, т.к. для включенного makefile текущим каталогом будет каталог откуда вызван первичный makefile, а отсюда файлы в подкаталоге доступны только с указанием пути. include же по сути просто вставляет текст одного файла в другой и все.
Другой вариант - не использовать include, а запускать make рекурсивно для каждого подкаталога с переходом в этот подкаталог (вроде ключ -с в make).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
зачем с помощью инклуда в Makefile_a указывать путь к Makefile_aa, и во втором указывать тоже путь к файлам как будто это делаеться из Makefile_a?

затем, что нет никакой магии в подключении одного Makefile в другой, это просто текстовая подстановка, точно такая же, как если ты физически перенесёшь текст второго Makefile в то место первого где написан include.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы