尽管增量链接,但在库更改时,Exe会执行完整链接

Tim*_*yer 5 c++ linker incremental-linking visual-studio visual-c++

我有一个MSVC++项目,包括一个可执行文件,几个自己的静态库和一些预编译的静态第三方库.exe使用增量链接以加快构建时间.

当我在可执行项目中更改.cpp文件时,编译+链接非常快(<10s).
但是,当我在我自己的一个库中更改.cpp文件时,可执行项目似乎正在针对它使用的每个库执行完整链接.
我不太确定它是否真的是一个完整的链接,但是从"vc90.pdb未找到"链接器警告,我可以告诉它链接到一些根本没有改变的外部库.

这是项目结构的一个例子:

  • 预编译的第三方库ExtLib1,ExtLib2ExtLib3
  • 自己的图书馆MyLib,使用第三方库ExtLib1
  • 自己的Exe MyExe,使用MyLibExtLib1-3

改变.cpp文件MyLib,然后将导致MyExe被链接到MyLib,ExtLib1,ExtLib2ExtLib3,即使增量链接被打开.

在我的项目中,完整链接大约需要5分钟,所以我问:有没有办法只重新链接已更改的库?

car*_*000 2

这是增量链接的介绍。它列出了会导致完整链接的情况。其中之一是“使用 /Yu /Z7 选项编译的对象已更改。”,检查您的 MyLib 是否捕获它。