子目录和Makefile

Ced*_* H. 57 makefile

我认为这是一个多次被问到的问题,但我找不到正确的方法.

我有以下结构:

project/
project/Makefile
project/code
project/code/*.cc
project/code/Makefile
Run Code Online (Sandbox Code Playgroud)

当我在"项目/代码"目录中并调用"make project_code"时,我的代码正在正确编译.

我想这样做,当我在"项目/",只是呼吁"让project_code",仿佛我是在"项目/代码".

生成文件"项目/ Makefile文件"将包含其他的规则(如"安装")和一些规则来编译,就好像我是在"项目/代码".为此,我请求你的帮助......谢谢.

Jus*_*ini 81

最简单的方法是:

CODE_DIR = code

.PHONY: project_code

project_code:
       $(MAKE) -C $(CODE_DIR)
Run Code Online (Sandbox Code Playgroud)

.PHONY规则意味着project_code不是需要构建的文件,并且该-C标志指示目录中的更改(相当于cd code在调用之前运行make).您可以使用相同的方法调用codeMakefile中的其他目标.

例如:

clean:
       $(MAKE) -C $(CODE_DIR) clean
Run Code Online (Sandbox Code Playgroud)

  • 是$(MAKE)对你定义的变量的引用?或者这是一个永远存在的内置功能? (2认同)