在多个解决方案之间共享C++静态库会导致不必要的重建
Sharing C++ static libraries between multiple solutions causes unnecessary rebuild
我有两个解决方案,它们都包含并引用同一个静态库。我使用"添加引用…"功能来包含库,而不是指定额外的链接器输入。当我构建其中一个解决方案时,似乎会导致另一个解决解决方案认为需要重建共享库,然后重新链接第二个解决方案。因此,如果我在两个解决方案之间来回构建(不进行任何代码更改),那么解决方案每次都会执行链接。
看起来共享静态库实际上并没有被重新编译,但VS正在为它执行库管理员步骤。我猜这个库管理员步骤是因为.lastbuildstate文件(包含上次构建项目的解决方案的路径)被确定为过时了。
以前有人经历过这个问题吗?有更好的方法吗?
如果库真的是共享的并且独立于两个解决方案,我建议将其转移到一个单独的解决方案。。。我知道这并不是你真正想要的,但从依赖关系本身的性质来看,这似乎是合乎逻辑的。
支持这一点的另一个考虑因素是,该库稍后可能会用于其他项目。因此,最好将其移动到一个单独的位置(单独的解决方案,VCS中的单独文件夹),并将其视为任何第三方库(即openssl、boost等),将依赖项指定为链接器输入。
以上只是我对如何做到这一点的想法,并不是任何"最佳实践"的代表。
相关文章:
- 用callgrind追踪不必要的副本
- 不必要的C++代码最终会出现在我完成的程序中吗?
- 总和的不必要行为C++?
- C++:将初始化的对象传递给另一个类的构造函数;需要不必要的构造函数吗?
- 在这种情况下,使用 string_view 是否会导致不必要的字符串复制?
- std::mutex::lock() 产生奇怪(和不必要的)ASM 代码
- 如何在插入排序中使用 replace() 使语句变得不必要
- C 包装器C++库周围没有不必要的头文件
- 编译器是否消除了不必要的原子?
- 在 c++ 中不必要的包含
- GCC为AVR上的简单ISR产生不必要的寄存器推送
- 在序列化过程中删除不必要的内存分配
- QTREEWIDGET子分类,停止下降指示器显示给定有不必要的DropIndicatorPosition
- 如何在不指定不必要的模板参数的情况下使用模板类的成员类型
- Android Gradle避免了CMake项目不必要的重建
- 避免使用std::unordered_map(和其他)进行重复搜索或不必要的构造
- 摆脱可变参数模板递归基本情况下不必要的类
- cmake/make(对象)依赖性问题 - 标头更改时而不是重建
- Cmake和忍者重建不必要的文件
- 在多个解决方案之间共享C++静态库会导致不必要的重建