我认为这是一个多次被问到的问题,但我找不到正确的方式来做这件事。
我有以下结构:
project/
project/Makefile
project/code
project/code/*.cc
project/code/Makefile
当我在“项目/代码”目录中并调用“make project_code”时,我的代码正在正确编译。
当我在'project /'时,我想这样做,只是调用“make project_code”就好像我在'project / code'中一样。
makefile'project / Makefile'将包含其他规则(例如'install')和一些编译规则,就好像我在'project / code'中一样。为此,我请求你的帮助......谢谢。
答案 0 :(得分:81)
最简单的方法是:
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
答案 1 :(得分:1)
尝试将此规则放在project / Makefile中(对于GNU make):
.PHONY: project_code project_code: cd code && make