Makefile真是博大精深。。。
子目录Make
一个项目的目录结构如此:
├── liba
│ ├── A.c
│ ├── A.h
│ ├── Makefile
│ └── test.c
├── libb
│ ├── B.c
│ ├── B.h
│ ├── Makefile
│ └── test.c
├── main.c
└── Makefile
liba和libb都是独立的模块,有着自己的.h文件,.c文件和测试文件。在这两个目录下分别make,会生成相应的.o文件(liba/A.o, libb/b.o)和测试用的可执行文件。上层目录中的main.c是我们的程序主入口,分别include了这两个模块。
我希望分别在liba和libb下分别make生成.o文件,再回到main.c目录进行make操作。为了达到这一效果,可以采用这里所描述的方法。
CODE_DIR_A = liba
CODE_DIR_B = libb
... ...
.PHONY: a_code b_code clean
a_code:
$(MAKE) -C $(CODE_DIR_A)
b_code:
$(MAKE) -C $(CODE_DIR_A)
clean:
$(MAKE) -C $(CODE_DIR_A) clean
$(MAKE) -C $(CODE_DIR_B) clean