make tips

简介

make 是功能强大的构建工具,也是 cmake 的底层构建工具,即使在今天在中小型项目中也很适合。想要更好地使用 make 的强大功能,需要参考手册,同时项目 Makefile-Templates 也很值得参考。这里并不会介绍 make 的基本使用方法,而是关注于实际构造的细节。

 

构建项目

这里假设要构建一个有一点复杂的项目,src 目录下可能包含多个子目录,同时可执行文件的 standalone 下可能要构造多个可执行文件。假设目录结构为

同时 main1 只依赖 lib-dir1 下的库,而 main2 依赖该项目中所有的库。

此时,要求编写的 Makefile 尽可能通用和简单,一个很好的想法是利用 include 来复用 make 的规则。很好,我遍布下去了,快进到结果。

 

根目录下包含 common.mksubdir.mkMakefilecommon.mk 如下

 

subdir.mk 如下

 

Makefile 如下

 

standalone/Makefile 如下

 

src/Makefile 如下

 

src/lib-dir1/Makefile 如下

 

src/lib-dir1/lib-subdir1/Makefile 如下

 

src/lib-dir1/lib-dir2/Makefile 如下

 

其主要想法是,令复杂子目录下的 Makefile 保持相同的结构和形式,并尽可能地短,所以将规则都写在了 subdir.mkcommon.mk 中,只需要 include 就好了。

 

伪目标

 

##