有关最我用Visual C ++开发工作++的,我使用的部分版本,例如按F7,只改变了C ++的文件和它们的依赖得到重建,其次是增量链接。经过一个版本在测试之前,我需要做的完全重建的预防措施,这发生在我当前的项目约45分钟。我看过很多帖子和文章倡导这一行动,让人怀疑这是必要的,如果是这样,为什么呢?它会影响交付的EXE或相关PDB(我们也测试使用)?将软件功能从测试的角度来看任何不同?

有关发布版本,我使用的VS2005,增量编译和连接,预编译头。

有帮助吗?

解决方案

目前已不是每个人都遇到过这种使用模式?我得到奇怪的构建错误,甚至调查之前,我做了充分的重建,问题就会消失。

这本身对我来说是足够的理由做了发布前完全重建。

不管你愿不愿意把增量构建,没有在测试完成的问题,是一个品味的问题,我想。

其他提示

在局部构建系统的工作原理是检查对构建结果的源文件的文件的日期。因此,它可以,如果你打破例如恢复从源头控制较早的文件。早期的文件将有一个修改的日期早于构建产品,所以产品不会被重建。为了防止这些错误,你应该做一个完整的生成,如果它是一个最终版本。当你虽然开发,增量构建当然是更有效的。

编辑:当然,做了充分的重建也保护你从增量构建系统可能存在的错误

的基本问题是,编译是依赖于环境(命令行标志,可用的库,并且可能是一些黑魔法),等等,如果它们在相同的条件下执行的两个汇编只会有相同的结果。对于测试和部署,要确保将环境作为控制越好,你没有得到,由于奇数码古怪的行为。一个很好的例子是,如果你更新系统库,然后重新编译一半的文件 - 半仍试图使用旧的代码,有一半都没有。在一个完美的世界,这将不是出错马上或不会引起任何问题,但遗憾的是,有时那些都发生。其结果是,这样做了完整的重新编译避免了大量的用交错构建过程相关的问题。

我肯定会推荐它。我看到的一些场合具有较大的Visual C ++解决方案的依赖检查不拿起改变代码的一些依赖。当这种变化是该效果的对象很奇怪的事情就可以开始发生大小的头文件。 我相信,依赖检查在VS 2008中得到了更好,但我仍然不相信它的发布版本。

不出货的增量链接二进制最大的原因是,一些优化被禁用。链接器将离开功能(更容易,以取代他们的下一个增量链接)之间的填充。这增加了一些膨胀的二进制文件。可能有额外的跳跃,以及,这改变了内存访问模式,并可能导致额外的寻呼和/或高速缓存未命中。功能旧版本可以继续驻留在即使他们从来不被称为可执行文件。这也导致了二元膨胀和性能下降。你当然不能使用链接时代码生成与增量链接,这样你就错过了更多的优化。

如果你给一个调试版本的测试,那么它可能不是一个大问题。但是您的候选版本应该从头建在释放模式中,优选地在专用构建机器具有受控的环境。

Visual Studio中存在一些问题,部分(增量)构建,(我主要是遇到了链接错误)不时,它是非常有用的,有一个完整的重建。

在的长编译时间的情况下,有两种解决办法:

  1. 使用一个并行编译工具,并采取您(假定)的多芯硬件的优点。
  2. 使用一个构建机。我用的最多的是一个独立的编译机,设置了CruiseControl的,执行全重建不时。 “官方”版本,我提供的测试团队,并最终给客户,始终从构建机中取出,而不是从开发者的环境。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top