升压意味着是在标准的非标准C++库,每一个C++用户可以使用.假设它可用于开源C++项目是否合理,或者它是一个很大的依赖?
基本上你的问题归结为"将[免费库xyz]作为C++开源项目的依赖项是否合理."
现在考虑一下Stroustrup的以下引用,答案真的很简单:
如果没有一个好的库,大多数有趣的任务在C++中很难做到; 但是如果有一个好的图书馆,几乎任何任务都可以轻松完成
假设这是正确的(根据我的经验,它是)然后编写一个没有依赖关系的合理大小的C++项目是完全不合理的.
进一步发展这个论点,可以在(开发人员)客户端系统上合理预期的一个 C++依赖(除了系统库)是Boost库.我知道它们不是,但这不是一个软件无法推定的假设.
如果一个软件甚至不能依赖Boost,它就不能依赖任何库.
请查看http://www.boost.org/doc/tools.html.具体来说,如果您想将boost-dependencies嵌入到项目中,bcp实用程序会派上用场.网站摘录:
"bcp实用程序是一个用于提取Boost子集的工具,它对于希望与Boost分开分发其库的Boost作者以及希望将Boost子集与其应用程序一起分发的Boost用户非常有用.bcp还可以报告您的代码所依赖的Boost的哪些部分,以及这些依赖项使用的许可证."
当然这可能有一些缺点 - 但至少你应该意识到这样做的可能性.
我曾经非常谨慎地将依赖项引入系统,但现在我发现依赖项并不是什么大问题.现代操作系统带有包管理器,它们通常可以自动解决依赖关系,或者至少使管理员可以轻松安装所需的东西.例如,Boost在Gentoo-Postage下可用作dev-libs/boost,在FreeBSD下可用作devel/boost.
现代开源软件在其他系统上构建了很多.在最近的一项研究中,通过跟踪FreeBSD软件包的依赖关系,我们确定了FreeBSD 4.11系统中的12,357个端口软件包,共有21,135个库依赖项; 也就是说,他们需要一个库,而不是作为基本系统一部分的52个库,以便编译.库依赖项包含688个不同的库,而单个项目使用的不同外部库的数量在1到38之间,模式值为2.此外,5,117个项目至少使用一个外部库,405个项目使用10个或更多.
最后,您的问题的答案将来自成本与收益分析.重用一个成熟的,广泛使用的,经过审查和测试的库(如Boost)的好处是否大于依赖的低成本和低成本?对于任何非常重要的Boost设施使用,答案是你应该继续使用Boost.