构建系统的优化与陷阱解析
构建与重建
在构建项目时,为确保$(library_BINARY)被正确定义,需要包含库目录下的makefile。root.mak文件提供了两个实用的函数:DEPENDS_ON和DEPENDS_ON_NO_BUILD。
DEPENDS_ON_NO_BUILD:该函数仅为指定模块设置变量,以便在makefile中使用。若在可执行文件的makefile中使用此函数,那么库文件(如lib.a)必须已经存在,可执行文件才能成功构建。它类似于经典的递归构建方式,虽依赖库但不知如何构建该库。DEPENDS_ON:此函数用于确保在必要时库文件会被构建。它更为灵活,无需递归,就能指定依赖关系并确保代码被正确构建。
非递归make系统的使用
非递归make系统具有极大的灵活性,以下是一些示例,展示了它与递归系统一样灵活,甚至更胜一筹:
-从顶层构建所有内容:
$ cd /src $ make -n