1

为什么 C++ Builder 6 总是编译所有文件?

我对一个文件进行了一些更改,但 BCB 6 会在我启动应用程序时编译所有文件。任何的想法?我使用的是 Windows XP SP2。

4

5 回答 5

1

您是否位于同一台机器上的源文件和二进制对象?如果不是听起来像您有网络时间同步问题。

如果它们最有可能是头文件问题,则编译器包含文件在未来某个时间有修改日期,或者您的应用程序依赖于在编译期间更改的某些头文件,例如从 COM 导入。

编辑:检查设置 VS 有一个始终重新编译的标志,这对于 BCB 也可能是正确的,如果设置然后取消设置它。另一种可能性是预编译的头文件被错误配置为在每个源文件上生成。

我不熟悉 BCB 6 来给出更准确的答案。

于 2008-09-18T12:48:17.317 回答
1

试试这个 BCB 编译器插件: Bcc32Pch IDE Plugin

于 2008-09-18T13:14:02.250 回答
1

您是否使所有或许多文件依赖于特定模块?

任何依赖于特定模块的文件都将在模块类结构(包含在 .h 文件中)被修改时重新构建。例如,如果您有一个可以被许多其他模块访问的数据模块,那么每次修改数据模块的类结构时,您都会看到所有依赖模块的重建。

于 2008-09-18T19:49:09.380 回答
1

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. 不要在头文件中使用 all.h
  2. 您可以添加项目标题中使用的所有包含,例如,
  3. 所有依赖于“预编译头文件”的源都不会再次编译!
  4. 预编译头文件的生成会很慢!所以只在 all.h 中添加 headers,不会经常更改。像系统标题或您的标题已经完成。
  5. 编译可能会失败。有时包含的顺序会为编译产生“僵局”。如果发生这种情况,请停用“预编译头文件”。如果您像在 java 中那样编写 c++,大多数问题都会得到解决:每个类都将成为他自己的文件(cpp 和 h)。
  6. 项目选项“Pre-Compiled headers”中的文件名显示了实际预编译文件的基本名称。一个单元可以与另一个单元共享一个预编译文件,如果它在“pragma hdrstop”之前具有(完全相同)相同的inludes。如果您只有一个带有数字后缀的文件,则可以达到最佳性能。多个预编译头的示例:

单元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>
于 2009-07-03T21:45:58.050 回答
0

确保您使用的是“make”命令而不是“build”命令,除非它是必需的。

用 Borland 工具做一个项目似乎总是有这个问题——它不一定注意到哪些已经改变并开始编译所有东西。

查看 Pre-Compiled Headers 选项,这可能有助于加快速度。

当 Borland/CodeGear 从 C++Builder 2007 开始切换到 MSBuild 系统时,编译速度更快,效率更高。

于 2008-09-18T13:14:03.230 回答