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