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