Приветствую!
Цитата(zemlemer @ Jun 8 2015, 20:08)

Хочется, чтобы объектные файлы лежали в отдельном каталоге: например /obj/.
Выложу пока здесь. Представляемая система сборки размещает объектные файлы не просто в каталоге ./obj/, но рассовывает их по подкаталогам в соответствии с подкаталогами исходных текстов. Из крайне приятных плюшек: возможность указать ключи компиляции для каждого файла индивидуально.
Готовые модули программ, оформленные как библиотеки, для микроконтроллеров (МК)
разрабатываются и поставляются, чаще всего, в виде исходных текстов
(т.к. вариантов компиляции для МК очень много и учесть их все для поставки
библиотеки в объектных файлах практически невозможно). При добавлении
в программу такой библиотеки хотелось бы абстрагироваться от её состава
и необходимых ей специфичных правил компиляции. Традиционно это решается
оформлением отдельного файла Makefile для библиотеки. Но, как показано
в статье "Recursive Make Considered Harmful"
(http://aegis.sourceforge.net/auug97.pdf), это может вызывать ошибки.
Описываемая система позволяет включать библиотеку функций в виде исходных
текстов и не отслеживать изменения в её составе: в основной программе
достаточно ограничится включением обработки файла files.mk библиотеки.
Возможные дальнейшие изменения в составе библиотеки и правилах её компиляции
должны отражаться в соответствующем файле files.mk и не будут вызывать
никаких изменений в правилах компиляции основной программы. Именно
для достижения этой цели была создана данная система компиляции программ.
Илья