30 сентября 2008 г. 18:50 пользователь Dmitry E. Oboukhov  написал:
> DF>>> http://makepp.sourceforge.net/

> кстати ковыряясь с многими deb-пакетами натыкался на рекурсии в make
> в 100% случаев введением дополнительных целей или зависимостей рекурсии
> отлично убирались

> может кто-то показать мне make-задачу/случай нерешабельный без
> рекурсивного перевызова того же make?

Оно решабельно без рекурсии, но я не хочу решать это таким способом.

0. Мои makefiles "гладкие", все общие правила и определения переменных
вынесены во включаемые defs.make и rules.make
и они параметризуются использующим их Makefile через определения
управляющих переменных.

1. Каждый непустой подкаталог проекта имеет свой makefile
со своими особенностями (типом подпроекта) и мне нужны
пространства имен для управляющих переменных.

Для обычного (традиционного) make я не вижу другого способа, кроме
рекурсивного вызова make.

2. Я не хочу засорять корневой makefile проекта явным включением
makefiles подкаталогов, делая как бы namespace префиксами в именах
переменных да и вручную перечислять файлы я тоже не хочу.

И так, решается это всё одним из следующих способов:

0. Рекурсивно вызываем make. Признано вредным.

1. Генерим Makefiles. Но тогда мы неправильно выбрали инструмент и
этот make не нужен, а нужен тот язык, из которого makefiles генерятся.
Причем тут make вообще?

2. Используем другие make-подобные утилиты: SCons, makepp, ...
где можно без рекурсии и есть namespaces.

Ответить