Borland C ++ Builder 6总是编译所有文件

时间:2008-09-18 12:29:54

标签: compilation c++builder c++builder-6

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

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

5 个答案:

答案 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>

导入

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