写代码难免依赖一些外在库,自己发明轮子的时代已经远去了。
但一些开源库变化实在太快太多。
以至于以前自己写好的东西或是老的开源项目代码,过几年拿出来重新make一下,发现不通过了。
原因是依赖库的很多API都不能用了。或者静态库里已经没有这个入口了。
最近编译依赖boost库和ffmpeg库的程序都遇到这问题,实在让人崩溃。
我们自己写程序用到开源库时应该怎么抉择?
- 直接把开源库的代码集成到项目中,对于代码量大的库不现实。
- 完全不用吧,也不太现实。比如FFMPEG其实是个蛮厉害的东西。
- 把库的头文件和库文件打包到项目里,依赖的东西不能与时俱进,似乎也不太好。
对于接口不太稳定但挺强大的库,各位是什么态度?
我觉得以
boost
和ffmpeg
的口碑,这事儿问题在题主这边的概率比较大“接口不太稳定但挺强大”这个描述其实是矛盾的,对于第三方库来说,接口稳定、鲁棒性等指标很多时候重要性甚至会凌驾于功能丰富或使用方便(因为后面的问题是可以通过再包一层来解决大半的)。所以如果有多个第三方库可以选择,选稳定的耐操的基本不会有错,大不了你可以自己包一层把API弄得帅一点
最后,用第三方库的时候通过git submodule来管理再合适不过了,linus大魔王对这个问题的理解&提供的解决方案堪称完美