Я новичок в Makefiles или, по крайней мере, пишу свои собственные Makefile для того, что мне нужно, и на практике я решил переписать некоторые из моих сценариев сборки, чтобы использовать Makefiles. Итак, вот моя установка:
Бэкэнд со следующими компонентами:
- lib (код библиотеки)
- api
- bot
- база данных
et c. Я использую Makefile уровня root, чтобы запускать такие вещи, как создание всех подпроектов и их очистка.
На данный момент я использовал оболочку classi c для l oop и звонил $(MAKE) -C $$proj
. Однако это не идеально. Хотя я могу жить с некоторыми компромиссами, мой настоящий вопрос заключается в том, чтобы заставить переменные проекта работать.
Я хочу иметь переменные COMPONENT_NAME
и COMPONENT_FILES
в каждом компоненте, поэтому для lib COMPONENT_NAME
будет «Библиотека для xyz ".
lib(lib/Makefile):
COMPONENT_NAME = "Library for xyz"
bot(bot/Makefile):
COMPONENT_NAME = "An awesome Bot"
Итак, если я включу оба этих файла в файл root, последний включаемый файл получит имя компонента et c.
Я хочу достичь каждого компонента, который я хочу прочитать в их Makefile, и в зависимости от их настроек я хочу выполнить действие. Что-то вроде этого (я знаю, что это недействительный файл Makefile)
lib api bot:
include $@/Makefile
# Work with COMPONENT_NAME
Любая помощь о том, как заставить эти Компоненты работать, было бы здорово. Я хотел бы иметь возможность создавать каждый компонент отдельно, но также использовать Makefile верхнего уровня для создания всех из них.
Заранее спасибо