1

我有一个由大约 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

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

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

有谁知道究竟是什么导致了两个“生成代码”步骤需要这么长时间?是否有我缺少的项目设置?

4

1 回答 1

1

你为你的项目使用预编译的头文件吗?托管 C++ 以与非托管 C++ 相同的方式支持它。要将您的项目切换到预编译的头文件:

有关详细信息,请参阅本文(向下滚动到“预编译头文件”部分)。

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

编译项目现在应该只花费之前构建时间的一小部分。

于 2009-09-27T19:08:26.870 回答