Поддиректории и файлы 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). Вы можете использовать тот же подход для вызова других целей вcodeMakefile.например:
clean: $(MAKE) -C $(CODE_DIR) clean