我有一个由大约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
我应该如何开始调试为什么这个程序集需要很长时间才能构建?编译和链接时间虽然不是很好,但可能与我对这种规模的项目的期望值有关。令我担心的是,我看到两个“生成代码”步骤,每个步骤比大多数其他项目花费的时间更长。
我的第一个猜测是,这与链接到程序集的非托管代码的数量有关。但是,我有几个托管应用程序项目使用尽可能多的本机代码,并且构建时间非常合理。
是否有人知道究竟会导致两个“生成代码”的步骤花费这么长时间?我缺少一个项目设置吗?
答案 0 :(得分:1)
您是否为项目使用预编译的标题?托管C ++以非托管C ++的方式支持它。要将项目切换到预编译的标题:
有关详细信息,请参阅this article(向下滚动到“预编译标题”部分)。
xxxx.h
是一个包含项目中使用的所有常用头文件的头文件。xxxx.h
文件且没有其他代码的xxxx.cpp文件xxxx.cpp
文件的VS编译设置中,对于所有配置(构建和发布),在预编译头部分中,将其设置为“生成预编译头”。编译项目现在应该只占上一个构建时间的一小部分。