为什么C ++ Builder 6总是编译所有文件?
我对一个文件进行了一些更改,但BCB 6会在启动应用程序时编译所有文件。任何的想法?我使用的是Windows XP SP2。
答案 0 :(得分:1)
您是位于同一台计算机上的源文件和二进制对象吗?如果没有听起来像你有网络时间同步问题。
如果它们最有可能是头文件问题,则编译器包含文件将来某个时间会有修改日期,或者您的应用程序依赖于某些头文件,这些头文件在编译期间会因COM导入而发生变化。
编辑:检查设置VS有一个总是重新编译的标志,对于BCB也可能是这样,如果设置则取消设置。另一种可能性是,预编译的头文件未配置为在每个源文件上生成。
我不熟悉BCB 6给出更准确的答案。
答案 1 :(得分:1)
尝试BCB编译器的这个插件: Bcc32Pch IDE Plugin
答案 2 :(得分:1)
您是否已根据特定模块制作了所有或许多文件?
只要修改了模块类结构(包含在.h文件中),就会重建任何依赖于特定模块的文件。例如,如果您有许多其他模块访问的数据模块,则每次修改数据模块的类结构时都会看到所有相关模块的重建。
答案 3 :(得分:1)
Borland中有一个编译指示,它控制着重新编译了多少行代码。
在过去的几年里,我已经管理(在某些项目中),只编译了我的源代码的变化。我不知道,如果这将在较新版本的borland中使用
Borland 6有一个pragma“hdrstop”。 如果项目选项“Pre-Compile headers”不是“none”
,则此选项仅处于活动状态 几年前我的计算机速度非常慢,我通过以下技巧将编译时间从几小时加快到几分钟所有cpps都成为第一行
#include "all.h"
#pragma hdrstop
默认是“vcl.h”的包含
“all.h”将包含所有标题,所有标题都需要!单位。每个单元都会跳过所有来源,这取决于之前 pragma hdrstop中的标题。
示例:
Unit1.h
#include <string>
Unit1.cpp
#include "all.h"
#pragma hdrstop
#include "Unit1.h"
Unit2.h
#include <vcl>
Unit2.cpp
#include "all.h"
#pragma hdrstop
#include "Unit2.h"
all.h
#include <string>
#include <vcl>
Unit1.h
#include <string>
Unit1.cpp
#include "all.h"
#pragma hdrstop
#include "Unit1.h"
Unit2.h
#include <vcl>
Unit2.cpp
#include <vcl> //!!!!!!!!!!!!!!!!!!! produce a second version of an precompiled file
#pragma hdrstop
#include "Unit2.h"
all.h
#include <string>
#include <vcl>
答案 4 :(得分:0)
确保使用“make”命令而不是“build”命令,除非是必需的。
使用Borland工具制作项目似乎总是存在这个问题 - 它不一定会注意到哪些已经改变并开始编译所有内容。
查看预编译标题选项,这可能有助于加快速度。
当Borland / CodeGear从C ++ Builder 2007开始,切换到MSBuild系统时,编译速度更快,效率更高。