Exe выполняет полное связывание при изменении библиотеки, несмотря на инкрементное связывание

У меня есть проект MSVC++, состоящий из исполняемого файла, нескольких собственных статических библиотек и некоторых предварительно скомпилированных статических сторонних библиотек. exe использует инкрементную компоновку, чтобы ускорить время сборки.

Когда я изменяю файл.cpp в исполняемом проекте, компиляция + связывание выполняется очень быстро (<10s ).
Однако, когда я изменяю файл.cpp в одной из моих собственных библиотек, исполняемый проект выполняет полную ссылку на каждую используемую им библиотеку.
Я больше не уверен, является ли это полной ссылкой на самом деле, но из предупреждений компоновщика «vc90.pdb not found» я могу сказать, что это ссылки на некоторые внешние библиотеки, которые вообще не изменились.

Вот пример структуры проекта:

  • Предварительно скомпилированные сторонние библиотеки ExtLib1, ExtLib2иExtLib3
  • Собственная библиотека MyLib, использование сторонней библиотекиExtLib1
  • Собственный Exe MyExe, используя MyLibиExtLib1-3

Изменение файла.cpp в MyLibприведет к тому, что MyExeбудет связан с MyLib, ExtLib1, ExtLib2и ExtLib3, даже если Инкрементальное связывание включено.

В моем проекте полная ссылка занимает около 5 минут, поэтому я спрашиваю:Есть ли способ повторно -связать только измененную библиотеку?

5
задан Tim Meyer 6 July 2012 в 08:58
поделиться