在多个解决方案之间共享C++静态库会导致不必要的重建

Sharing C++ static libraries between multiple solutions causes unnecessary rebuild

本文关键字:不必要 重建 静态 解决方案 之间 C++ 共享      更新时间:2023-10-16

我有两个解决方案,它们都包含并引用同一个静态库。我使用"添加引用…"功能来包含库,而不是指定额外的链接器输入。当我构建其中一个解决方案时,似乎会导致另一个解决解决方案认为需要重建共享库,然后重新链接第二个解决方案。因此,如果我在两个解决方案之间来回构建(不进行任何代码更改),那么解决方案每次都会执行链接。

看起来共享静态库实际上并没有被重新编译,但VS正在为它执行库管理员步骤。我猜这个库管理员步骤是因为.lastbuildstate文件(包含上次构建项目的解决方案的路径)被确定为过时了。

以前有人经历过这个问题吗?有更好的方法吗?

如果库真的是共享的并且独立于两个解决方案,我建议将其转移到一个单独的解决方案。。。我知道这并不是你真正想要的,但从依赖关系本身的性质来看,这似乎是合乎逻辑的。

支持这一点的另一个考虑因素是,该库稍后可能会用于其他项目。因此,最好将其移动到一个单独的位置(单独的解决方案,VCS中的单独文件夹),并将其视为任何第三方库(即openssl、boost等),将依赖项指定为链接器输入。

以上只是我对如何做到这一点的想法,并不是任何"最佳实践"的代表。