Visual Studio 8:在混合模式程序集中构建时间

时间:2009-08-19 17:37:19

标签: .net visual-studio c++-cli managed-c++

我有一个由大约50个源文件组成的C ++ / CLI程序集。此程序集中的代码静态链接到许多C ++库,以执行各种“繁重的”类型任务。

我正在使用Visual Studio 8(2005)SP1来构建此程序集。

通过'仅限项目'构建这个程序集(没有依赖关系等) - >'仅重建'在一台体面的双核机器上大约需要4.5分钟。下面是用大约时间注释的缩写构建输出:

Compiling...
(file 0)
(file 1)
...
(file N)                   // About 2 min total to compile all files
Linking...                 // About 12s
Generating Code            // 42s
Finished Generating Code   // < 1s
Embedding Manifest         // < 1s
Generating Code            // 30s
Finished Generating Code
(15 seconds of nothing)
Done

我应该如何开始调试为什么这个程序集需要很长时间才能构建?编译和链接时间虽然不是很好,但可能与我对这种规模的项目的期望值有关。令我担心的是,我看到两个“生成代码”步骤,每个步骤比大多数其他项目花费的时间更长。

我的第一个猜测是,这与链接到程序集的非托管代码的数量有关。但是,我有几个托管应用程序项目使用尽可能多的本机代码,并且构建时间非常合理。

是否有人知道究竟会导致两个“生成代码”的步骤花费这么长时间?我缺少一个项目设置吗?

1 个答案:

答案 0 :(得分:1)

您是否为项目使用预编译的标题?托管C ++以非托管C ++的方式支持它。要将项目切换到预编译的标题:

有关详细信息,请参阅this article(向下滚动到“预编译标题”部分)。

  • 确保每个.cpp文件都以#include“xxxx”开头,其中xxxx.h是一个包含项目中使用的所有常用头文件的头文件。
  • 创建一个仅包含xxxx.h文件且没有其他代码的xxxx.cpp文件
  • 在整个项目的VS编译设置中,对于所有配置(构建和发布),在预编译头部分中,使整个项目使用xxxx.h预编译头。
  • 仅在xxxx.cpp文件的VS编译设置中,对于所有配置(构建和发布),在预编译头部分中,将其设置为“生成预编译头”。

编译项目现在应该只占上一个构建时间的一小部分。