每个项目都或多或少的对第三方库有依赖关系,但如何把握多少这个度一直是我认为比较棘手的问题。依赖少了,有种闭门造车,从轮子开始的感觉;而依赖多了,又会陷入项目构建,BUG查找,库稳定性等诸多的问题。本文根据自己在C++项目方面的心得做点总结:
- 依赖原则:
a. 依赖越少越好;
b. 优先使用编译器自带的开发库,省去了下载,安装,部署等操作,如:STL,ATL;
c. 依赖稳定的库,可以通过版本号判别,1.0以后的版本开始趋于稳定;
d. 优先使用功能全面的库,这样可以减少库依赖的数量,如:boost, apache apr;
e. 优先使用可移植的库,便于以后项目的移植;
f. 使用开源库,可以自己修正第三方库的BUG;
- 个人习惯:
a. 依赖的库:stl+(stlplus/Boost/Apr)+CppUnitLite+Log4Cpp+QT/WTL+XDLib
编译器自带库+功能全面/可移植的通用库+单元测试库+日志记录库+界面库+个人开发库;
b. 依赖库的位置:将所有依赖库放入DevLib目录,如只有单个项目依赖,则跟src目录同级;如有多个项目依赖,则与项目平级,项目中对库的依赖路径都使用相对路径;
- 对开源项目依赖库的分析:
a. redis: 不依赖任何库,自己实现网络事件,日志库;
b. activemq-cpp: 只依赖于其兄弟项目的apache apr库,自己实现线程操作,同步控制;库依赖路径使用环境变量:$(PLATFORM_SDK)\include"$(CPPUNIT_DIST)\include"$(APR_DIST)\include;