且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《C++编程规范:101条规则、准则与***实践》——1.3使用自动构建系统

更新时间:2022-05-24 06:10:06

本节书摘来自异步社区出版社《C++编程规范:101条规则、准则与***实践》一书中的第1章,第1.3节,作者:【加】Herb Sutter , 【罗】Andrei,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.3使用自动构建系统

摘要
一次按键就解决问题:使用完全自动化(“单操作”)的构建系统,无需用户干预即可构建整个项目。

讨论
单操作的构建过程非常重要。它应该能将源文件可靠和可重复地转换为可以交付的软件包。现在已经有了大量自动构建工具,没有理由不用。所以,选择一种,用起来吧。

我们曾经见到不少开发单位忽略了构建系统“单操作”这一需求。有些开发单位认为,用鼠标四处点击几下,运行一些实用工具来注册COM/CORBA服务器,手工复制一些文件,就是很不错的构建过程了。可是,我们都不应该将时间和精力浪费在机器可以干得更快更好的事情上。自动的、可靠的、单操作的构建是非常必要的。

成功的构建应该无声无息,不产生任何警告(见第1条)。理想的构建过程不会出现干扰,只会出现一条日志信息:“构建成功”。

构建有两种模式:增量构建和完全构建。增量构建只重新构建上次构建(可以是增量的或者完全的)以来发生改变的部分。注意:两次连续增量构建中的第二次构建不应该编写任何输出文件;否则,可能会出现依赖循环(见第22条),构建系统也可能会执行不必要的操作(比如,编写假的肯定要丢弃的临时文件)。

一个项目的完全构建可能有不同形式。可以考虑通过改变许多基本特性,调整构建过程的参数,候选的特性包括目标架构,调试模式还是发布模式,以及范围(基本文件、所有文件、还是完整的安装文件)。一种构建设置能够生成产品的基本可执行文件和库,另一种设置可能还会生成附属文件,而完全构建则可能生成包括所有文件、第三方可重发行文件和安装代码在内的安装文件。

随着项目日渐发展,不使用自动构建所带来的成本也会逐渐增加。如果没有从一开始就使用自动构建,时间和资源的浪费就将无可避免。更糟糕的情况是,到了不得不使用自动构建的时候,你所面临的压力将比项目开始时大得多。

大型项目可能应该设置一个“构建管理员”,他的工作就是负责构建系统。

参考文献
[***s95]§13,§19 ● [Dewhurst03]§1 ● [GnuMake] ● [Stroustrup00]§9.1