Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > GNU toolchain > вызов другого Makefile


Автор: slater 8.11.2010, 20:33
вечер добрый

объясните пожалуйста как вызвать цель из другого Makefile

Например, в корне проекта есть мейкфайл.

мне нужно например передавай определенное значение переменной окружения вызвать для сборки некоторой цели, которая прописана в другом мейкфайле

заранее благодарю за помощь

Автор: Фантом 8.11.2010, 23:00
Или я что-то не понимаю... в Makefile вписываются команды, которые надо выполнить для достижения той или иной цели. Что именно мешает в качестве одной из этих команд написать make -f <другой файл>  <цель из него>?

Автор: slater 9.11.2010, 20:18
это то понятно
а вот интересно как это делается рекурсивно? вот это хотелось бы понять на простом примере

Автор: Фантом 10.11.2010, 00:03
Цитата(slater @  9.11.2010,  20:18 Найти цитируемый пост)
а вот интересно как это делается рекурсивно? вот это хотелось бы понять на простом примере

Сначала Вы хотели "другой файл", а это не совсем рекурсия.  smile Однако и рекурсивно тоже можно, вот наитупейший пример:
Код

goal    :    Makefile
        ls
        make


Запихайте это в файл с именем Makefile и вызовите make в каталоге с ним. Получите бесконечную (в теории, конечно, на практике когда-нибудь память кончится) рекурсию. Да, если работаете с Windows, замените ls на dir (к вопросу это отношения не имеет - просто вставка, чтобы Makefile хоть что-нибудь делал).

Автор: slater 11.11.2010, 20:24
Фантом, спасибо

на самом деле я хотел узнать как вызываются мейки в поддиректориях проекта, например, в том же linux kernel src

т.е. чтобы собрать весь проект, есть главный мейк и есть куча мейков в поддиректориях, и т.д.
и вот как происходят вызовы из главного мейка других?

Автор: Фантом 11.11.2010, 22:09
Бог мой, да так же! Вы можете в теле make-файла написать любую команду. В том числе и переходы в произвольные каталоги и запуски там чего угодно и с какими угодно параметрами.

Автор: smoke_man 12.11.2010, 12:49
make -C

Автор: null56 15.11.2010, 20:04
Цитата(smoke_man @  12.11.2010,  12:49 Найти цитируемый пост)
make -C 

да, но можно еще и цель указать
вот пример моего общего мейка
Код

sub:
        $(MAKE) -C filesystem
        $(MAKE) -C network
        $(MAKE) -C thread
        $(MAKE) -C http
clean:
        rm -f $(APP).o $(APP)
        rm -f $(LIBRARY)
        rm -f $(OBJ)
        $(MAKE) clean -C network
        $(MAKE) clean -C thread
        $(MAKE) clean -C filesystem
        $(MAKE) clean -C http

filesystem, thread, filesystem, http подкаталоги

Добавлено через 1 минуту и 10 секунд
цель clean вызывает "make clean" для подкаталогов

Автор: slater 24.11.2010, 21:18
спасибо Вам, ребята!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)