只是想知道安装cpp包的最佳方法.我的背景是在JS/Ruby/etc中,所以看起来很奇怪没有cpm
等等.我错过了什么?我想它不是这么简单......
举一个例子,我甚至无法运行具有.cpp文件#include <iostream>
,因为我得到fatal error: 'iostream' file not found
为了清晰起见编辑:这iostream
是一个糟糕的例子,当我写这篇文章时,我的系统配置被打了回来.用非标准库替换你的想象力.
use*_*643 33
虽然我从未使用它们,但似乎有一些.
spack https://spack.io
buckaroo http://buckaroo.pm
猎人 https://github.com/ruslo/hunter
vcpkg https://github.com/Microsoft/vcpkg
pzr*_*zrq 27
柯南今天是36%以上GitHub贡献者的明显赢家,事实上我发现他们的入门文档很容易实现.这也是麻省理工学院的许可证.
Conan的文档甚至将它与biicode 进行了比较,我很惊讶在其他答案中没有提到它,但biicode似乎被放弃了很像cpm.
pacm有一些活动,但LGPL可能是一些项目的问题.
这建立在user3071643的答案之上,谢谢!
Jay*_*Jay 16
不,肯定没有C/C++的官方包管理器,但我会给你一些建议,希望能让你的日子更好.
首先,我建议调查CMake或GENie,以便以可扩展和跨平台的方式将库合并到构建系统中.但是,他们都假设您拥有处于"易于查找"位置的库,或者他们拥有与您的项目相同的构建系统.有很多方法可以教你如何找到你需要的库.所有其他解决方案均针对特定平
如果您的项目中有Node.js或Haxe,那么npm和haxelib都可以分别使用来自JavaScript或Haxe的C++(以预编译的dll/so形式),但这是一个很大的,可能是错误的假设您将在一个真正需要C/C++可以提供的好处的项目中使用Node.js或Haxe.
对于微软世界,我相信NuGet有一些C++库,虽然它对Visual Studio的平台支持有限,可能还有Windows,但它可能最适合你所谓的"包系统"给出你的例子(假设你的意思)那个cpm是一个C包管理器,就像npm是Node Package Manager一样.
对于Linux世界,从技术上讲,rpm,yum和apt-get的功能与C/C++开发包管理器一样,与系统包管理器一样,但与npm不同,您必须始终在全局安装包,但鉴于您的应用程序,如果它是一个Linux应用程序,可能会在一个或多个这些管理器的包中,并且包中嵌入了一个依赖列表,这不是什么大问题.
我不确定OSX/iOS世界是否有办法轻松下载框架包,但似乎它应该很容易实现,因为框架包可以包含你需要链接它们的所有东西.如果您对Linux风格的包管理器作为开发包管理器感到满意,那么总有MacPorts,如前一段所述.
我想要这个npm,本地安装,跨平台的功能,但是因为C/C++在很多平台上使用(所有这些?),而像我这样的C/C++程序员倾向于自己动手.一切都让我们所有人(不必要地?)忙碌,制作这样一个项目并没有太大的推动,这是一种耻辱.也许,你应该做一个?这肯定会让我的日子变得更好.
UPDATE
柯南是我们一直都想要的C/C++包管理器.它有本地和全局服务器,因此它对业务和开源软件包都有好处.它很年轻,它的全局存储库没有很多包.我们都应该努力为它添加包!
更新2
我发现vcpkg对Windows和Android非常有用.如果你无法克服Conan.io是用Python编写的事实,那么它可能值得一看.
此外,虽然它要求你自己和所有依赖项使用它,但我相信Build 2应该是几年内的终极赢家,但截至撰写本文时,它仍然即将推出.
小智 5
其他答案都提到了竞争解决方案,但我想我会补充自己的经验。我对软件包管理器进行了一些研究,并为$ WORK构建系统。我们是未开发的人,所以桌上什么都没有。这些是我的发现,YMMV。
柯南
声称可以支持每个构建系统,但是您需要编写这些Python脚本来告诉Conan构建的工作方式。魔术很多,易于配置。您还需要使用柯南创建来管理遥控器,本地遥控器等。我们想要简单的东西,这让我失望了。IDE集成无法可靠运行(由于Python脚本)。我问到可复制的构建,他们说它与您想要的一样可复制。因此,它实际上不是可复制的。
猎人
所有软件包都在单个存储库中定义。您需要分叉添加软件包。一切都由CMake驱动。由于语法不佳,不可复制的构建以及您可能已经知道的所有其他问题,我们希望在内部弃用CMake。Hunter提供可重复安装的软件包,因为您将Hunter置于源代码控制中,这非常好。
https://github.com/ruslo/hunter
巴卡鲁
有思想但最简单的解决方案。由于所有软件包都只是Git仓库,因此无需管理远程或软件包列表的分支。我们使用GitHub私有,所以这对我们来说是一个加号。我们对使用他们需要的Buck构建系统有些犹豫。事实证明,Buck可以正确处理大多数事情(我过去曾使用Meson&Bazel并很喜欢),并且无论如何,与集成CMake项目相比,编写Buck文件的工作量更少。而且,这对我们来说很重要,Buckaroo实际上也支持Java。虽然Maven的支持很糟糕。我们能够通过一个构建工具/包管理器创建iOS和Android构建。文档不多,但他们对我的电子邮件做出了回应。需要更多包裹。
氯乙烯
与Hunter类似,但来自Microsoft。他们没有较旧版本的软件包,这可能是个问题。同样,一切都在CMake中完成,因此构建会随着时间的推移变得更加复杂和缓慢。我认为VCPKG具有所有解决方案中最多的软件包。
https://github.com/Microsoft/vcpkg
归档时间: |
|
查看次数: |
14019 次 |
最近记录: |