《C++编程规范:101条规则、准则与最佳实践》——1.3使用自动构建系统-阿里云开发者社区

开发者社区> 异步社区> 正文

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

简介:
+关注继续查看

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

1.3使用自动构建系统

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

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

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

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

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

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

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

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

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
MongoDB最佳实践畅谈-计费系统
MongoDB最佳实践畅谈-计费系统 MongoDB的最佳实践,在以下情况,你应该使用MongoDB。 1)高写负载的场景 MongoDB默认更适合高写入而不是事务安全。
1344 0
【云吞铺子】业务系统性能压测最佳实践(二)--业务压测注意事项
云吞铺子--双11最佳技术实践系列# 本期继续为大家带来阿里云在本次双11实战中沉淀的前沿经验和满满干货!由阿里云技术高手霄翎为您深度阐述云上业务压测全流程注意事项!大牛出品,必属精品!
8969 0
阿里云Cloud Shell中使用日志服务CLI最佳实践
目前阿里云云命令行Cloud Shell已经部署日志服务CLI,免部署配置,一键管理日志服务资源与下载日志服务数据更轻松!
11442 0
【最佳实践】使用 Elasticsearch SQL 实现数据查询
如何使用 Elasticsearch SQL 来对我们的数据进行查询。
2372 0
+关注
异步社区
异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
12049
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载