当前位置:  开发笔记 > 编程语言 > 正文

提升C++开源项目的依赖性?

如何解决《提升C++开源项目的依赖性?》经验,为你挑选了3个好方法。

升压意味着是标准的非标准C++库,每一个C++用户可以使用.假设它可用于开源C++项目是否合理,或者它是一个很大的依赖?



1> Konrad Rudol..:

基本上你的问题归结为"将[免费库xyz]作为C++开源项目的依赖项是否合理."

现在考虑一下Stroustrup的以下引用,答案真的很简单:

如果没有一个好的库,大多数有趣的任务在C++中很难做到; 但是如果有一个好的图书馆,几乎任何任务都可以轻松完成

假设这是正确的(根据我的经验,它是)然后编写一个没有依赖关系的合理大小的C++项目是完全不合理的.

进一步发展这个论点,可以在(开发人员)客户端系统上合理预期的一个 C++依赖(除了系统库)是Boost库.我知道它们不是,但这不是一个软件无法推定的假设.

如果一个软件甚至不能依赖Boost,它就不能依赖任何库.


如果它们中的大多数都很小,我想我不想使用那些.我看到的那些是如此相互关联,以至于它们最终使我们的代码tarball膨胀了数十兆字节.我们将代码发送给他们希望能够在多个Linux发行版上编译的客户.版本之间有太多的变化,只是告诉我们的客户,提升是一个预先要求.巨大的提升阻止我们将其与我们的代码捆绑在一起.boost库开发人员似乎从不考虑限制代码大小.例如,boost_1_49_0/boost/typeof/vector200.hpp在一个源文件中超过2MB

2> Anders Hanss..:

请查看http://www.boost.org/doc/tools.html.具体来说,如果您想将boost-dependencies嵌入到项目中,bcp实用程序会派上用场.网站摘录:

"bcp实用程序是一个用于提取Boost子集的工具,它对于希望与Boost分开分发其库的Boost作者以及希望将Boost子集与其应用程序一起分发的Boost用户非常有用.

bcp还可以报告您的代码所依赖的Boost的哪些部分,以及这些依赖项使用的许可证."

当然这可能有一些缺点 - 但至少你应该意识到这样做的可能性.


实用程序会派上用场.网站摘录:

3> Diomidis Spi..:

我曾经非常谨慎地将依赖项引入系统,但现在我发现依赖项并不是什么大问题.现代操作系统带有包管理器,它们通常可以自动解决依赖关系,或者至少使管理员可以轻松安装所需的东西.例如,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.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有