![]() |
1
1
单主题历史课: 在某些语言中,程序员(有一定经验)可以了解到,只需在现有消息中添加字段对现有代码没有影响。任何不使用任何新字段的代码都不需要重新编译。对于C++,情况并非如此。 同一团队还可能将这些消息捕获到单个“消息”文件中,因为更改一条消息不会影响其他消息,添加新消息只会影响使用它的代码。同样,对于C++,情况并非如此。 在C++中,在一个包含N条消息的文件中更改单个消息的任何方面(字段名称、大小、字段类型、命名等),都会触发对所有消息的重新编译。抄送包含N个消息中的文件。 在我参与的一个大型C++项目中(我们网站上有100多个参与者),一个清晨的完整构建可能会在大约一个小时内完成。该构建分布在多个处理器上(但由团队共享)。到中午,整个构建持续时间通常超过3小时。 环境说明:1到3小时的构建时间几乎与共享有限的实验室设备(即注册访问、等待轮到您等)一样痛苦,在这些设备上调试更改。
编辑-编译-测试-调试周期的持续时间决定了程序员的工作效率。此循环持续时间长/慢时会出现问题。 对于大型C++项目,我们学会了在一天结束时合并(其他提交),然后启动一个构建,并希望它在早上完成(通常不会)。 在一天中(上午晚些时候到一天结束时),您只构建小的更改,调试工作,并推迟将代码“合并”到其他贡献者代码中。这种努力将继续增长。 在白天(清晨之后),您无法合并并完成系统的重建以调试您的贡献。 这就是问题所在。。。交付工作代码是贡献者应该做的事情。 用于比较: 在我的主桌面上,我可以在几分钟内切换窗口并完全重建最大的项目。我的大多数应用程序周期为<1分钟。 |
![]() |
daniel451 · 从源代码编译Python:多线程测试? 7 年前 |
![]() |
mbalug · 为ARM编译c++源代码 7 年前 |
![]() |
SuzLy · 使用flex编译简单令牌标识符 7 年前 |
|
user8659414 · Make无法识别我的库! 7 年前 |
![]() |
Farzad · 序列化CUfunction对象 7 年前 |
![]() |
Jersey · C++:何时需要重新编译有问题? 7 年前 |