Поддиректории и файлы Makefile
Я думаю, что этот вопрос задавали много раз, но я не могу найти право способ сделать это.
У меня есть следующая структура:
project/
project/Makefile
project/code
project/code/*.cc
project/code/Makefile
когда я нахожусь в каталоге 'project/code' и вызываю "make project_code", мой код компилируется правильно.
Я хотел бы сделать это, когда я нахожусь в 'project/', просто вызывая "make project_code", как если бы я был в 'project/code'.
makefile 'project / Makefile' будет содержать другие правила (например, "установить") и некоторые правила для компиляции, как если бы я был в "проекте/коде". А для этого я прошу вашей помощи... Спасибо.
2 ответа:
самый простой способ это сделать:
CODE_DIR = code .PHONY: project_code project_code: $(MAKE) -C $(CODE_DIR)
The
.PHONY
правило означает, чтоproject_code
это не файл, который нужно построить, а-C
флаг указывает на изменение каталога (эквивалентно запускуcd code
перед вызовомmake
). Вы можете использовать тот же подход для вызова других целей вcode
Makefile.например:
clean: $(MAKE) -C $(CODE_DIR) clean