子目录和Makefiles
我认为这是一个多次提出的问题,但我找不到正确的方法。
我有以下结构:
project/ project/Makefile project/code project/code/*.cc project/code/Makefile
当我在目录“项目/代码”,并调用“make project_code”我的代码编译正确。
我想这样做,当我在“项目/”,只是调用“make project_code”,就好像我在“项目/代码”。
makefile'project / Makefile'将包含其他规则(比如“install”)和一些编译规则,就好像我在'project / code'中一样。 为此,我要求你的帮助…谢谢。
最简单的方法是做:
CODE_DIR = code .PHONY: project_code project_code: $(MAKE) -C $(CODE_DIR)
.PHONY
规则意味着project_code
不是需要.PHONY
的文件, -C
标志表示目录中的变化(相当于在调用make
之前运行cd code
)。 您可以使用相同的方法在code
Makefile中调用其他目标。
例如:
clean: $(MAKE) -C $(CODE_DIR) clean
尝试把这个规则放在项目/ Makefile中,就像这样(对于GNU make):
.PHONY:project_code project_code: cd代码&& make