代码之家  ›  专栏  ›  技术社区  ›  Ryan

Visual Studio 8:混合模式程序集中的生成时间

  •  1
  • Ryan  · 技术社区  · 17 年前

    我有一个包含大约50个源文件的C++程序集。此程序集中的代码静态链接到多个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 回复  |  直到 11 年前
        1
  •  1
  •   Yuri Astrakhan    16 年前

    您的项目是否使用预编译的头文件?托管C++与非托管C++有同样的支持。要将项目切换到预编译的标题,请执行以下操作:

    this article (向下滚动到“预编译头”部分)了解详细信息。

    • 确保每个.cpp文件都以“include”xxxx开头,其中 xxxx.h 是包含项目中使用的所有公用头文件的头文件。
    • 创建一个仅包含 XXX.H 文件,没有其他代码
    • 在整个项目的vs compile设置中,对于所有配置(build&release),在pre-compile头部分中,使整个项目使用xxxx.h预编译头。
    • 在VS编译设置中 xxxx.cpp 仅文件,对于所有配置(build&release),在预编译头部分中,将其设置为“generate precompiled header”。

    编译项目现在应该只需要以前构建时间的一小部分。

    推荐文章