#《持续交付 发布可靠软件的系统方法》Page116
1.构建工具都有一个共同的核心功能,即可对依赖关系建模。
2.每个构建任务包含两点:
2.1 它做什么
2.2 它依赖于什么
3.构建工具的不通点在于它是任务导向的,还是产品导向的。
3.1 任务导向:Ant、NAnt、MSBuild。每个任务都知道自己在构建构成中是否被运行过,所以任务被调用两次,也只会执行一次
3.2 产品导向:Make。将状态以时间戳的形式保存在每个任务执行后生成的文件中。这在编译C或C++程序时非常好,因为Make会保证只编译上次构建够发生过修改的源代码文件。
4.Make
能在单次构建中追踪依赖关系,还能只构建那些受到本次修改影响的组件。当编译时间占时间成本时,对于提升团队开发效率很有用。
4.1 Make缺点一:随着应用程序复杂程度和组件之间依赖关系的增加,让Make难以调试。
为了使这种复杂性更易控制,一个常见的约定是在每个目录下创建一个Makefile,最上层的Makefile会递归调用每个子目录中的Makefile。
4.2 Make缺点二:它依赖于shell做所有的事情,Makefile就不得不和操作系统绑定在一起。
5.SCons
是一个Python写的自动化构建工具,和GNU Make相比优点明显(暂未遇到,后续补充)