Rik*_*ood 22 c++ compiler-construction build-automation build-process
我曾经做过一个C++项目,花了大约一个半小时进行完全重建.小编辑,构建,测试周期大约需要5到10分钟.这是一场没有生产力的噩梦.
您需要处理的最差构建时间是多少?
您使用了哪些策略来改善大型项目的构建时间?
更新:
您认为使用的语言对这个问题有多大责任?我认为C++很容易对大型项目产生大量依赖,这通常意味着即使对源代码进行简单的更改也可能导致大规模的重建.您认为哪种语言最能应对大型项目依赖问题?
Căt*_*tiș 43
[稍后编辑] 8.购买更快的机器.
小智 15
我的策略很简单 - 我不做大项目.现代计算的整个主旨是远离巨型和整体式,而不是小型和组件式.因此,当我处理项目时,我会将其分解为可以独立构建和测试的库和其他组件,并且彼此之间的依赖性最小.在这种环境中"完全构建"从未实际发生过,所以没有问题.
有时帮助的一个技巧是将所有内容都包含在一个.cpp文件中.由于包含每个文件处理一次,因此可以节省大量时间.(这样做的缺点是它使编译器无法并行化编译)
您应该能够指定多个.cpp文件应该并行编译(-j with make on linux,/ MP on MSVC - MSVC也可以选择并行编译多个项目.这些是单独的选项,没有理由为什么你不应该同时使用)
同样,分布式构建(例如,Incredibuild)可以帮助减轻单个系统的负载.
SSD磁盘应该是一个巨大的胜利,虽然我自己没有测试过(但是C++构建涉及大量文件,很快就会成为瓶颈).
预编译头文件在使用时也可以提供帮助.(如果他们不得不经常重新编译,他们也会伤害你).
最后,尝试最小化代码本身的依赖性非常重要.使用pImpl惯用法,使用前向声明,尽可能保持代码模块化.在某些情况下,使用模板可以帮助您解耦类并最小化依赖性.(在其他情况下,模板可能会显着减慢编译速度,当然)
但是,是的,你是对的,这是一个非常语言的东西.我不知道另一种语言在这个程度上遇到了这个问题.大多数语言都有一个模块系统,允许它们消除头文件,这是一个巨大的因素.C有头文件,但是这样一种简单的语言,编译时间仍然可以管理.C++是两个世界中最糟糕的.一种复杂的大型语言,以及一种可怕的原始构建机制,需要一次又一次地解析大量代码.
归档时间: |
|
查看次数: |
3714 次 |
最近记录: |