我对C ++世界很陌生,所以请对不起我这样一个虚假的问题。我谷歌一点,但无法找到正确的答案。
我的问题很简单 - 我应该如何在C ++世界中使用lib。例如在Java中 - 有 maven
和 gradle
为了这个任务。在Python中 - 我使用 pip
。在javascript中 npm
和 bower
做所有的事情。在C#中你使用 nuget
或者只是将DLL lib添加到您的项目中。但在C ++中看起来并不是那么容易。
我找到了一个名为的工具 conan
但是他们拥有的库很少,而且不包括任何我想要的东西。
所以,例如 - 我想使用nlp lib meta
。似乎他们没有提供任何安装程序文件。所以我假设我需要从github获取源代码。我应该编译它们然后尝试将编译的文件添加到我的项目中,或者我需要 lib
在我的项目中的文件夹,并把 meta's
这些文件夹中的源和操作后 meta's
他们在我的项目中的来源?
我的问题不是如何安装具体的 meta
lib,但更多来自源代码管理的观点。如果我使用 Visual Studio
上 Windows
例如,但我的colegue将编码 Clion
下 Linux
。我不想知道哪种是在C ++世界中管理依赖关系的正确方法。
Cget 将安装任何使用标准cmake的包,适用于linux和windows。它缩短了直接从github获取包的语法(例如 cget install google/googletest
)。
此外,还可以通过将依赖项列在其中来自动下载依赖项 requirements.txt
文件。
还有用于安装非cmake包和存储库的配方 这里 有超过300个图书馆(并且不断增长)。所以你可以安装curl cget install pfultz2/cget-recipes curl
。
C ++遗憾地没有库的包管理器。有些人在那里,并尝试成为一个虽然仍然很小和分散(如柯南)。
在linux中,你可以安装一些“-dev”软件包,但它们也不是“全部”。
你最有可能最终自己下载它们。接下来是你有集成这些库的问题。每个操作系统都有不同的构建系统,因此您必须了解如何构建c ++文件。
就像在使用Visual Studio的Windows中一样,您必须获得可视工作室项目或与nmake兼容的makefile来构建库,然后将它们添加到您的项目中。与linux makefiles相同。
有几个更高级别的构建框架 cmake
。您在帖子中的示例也适用于CMake。因此将这一个集成到cmake构建环境会更容易,但这仅适用于其他库也尝试使用/集成cmake构建环境(例如boost / qt正在执行此操作)。
是的,这些是对此的一些想法。遗憾的是,没有一个简单/明确的答案,因为没有真正的中央c ++数据包存储库也集成到构建系统中。
C ++没有类似的东西 pip
要么 npm/bower
。我不知道是否 maven
要么 gradle
可以说服它来处理C ++库。
一般来说,你将不得不最终得到
- 某个目录中的头文件
- 库文件(静态库或DLL /共享对象)。如果库是一个只有头文件库,就像某些boost库一样,那么你就不需要了。
您可以通过在计算机上构建库文件(通常用于开源项目,以及针对Linux平台的项目),或通过下载预编译的二进制文件(典型的Windows库,特别是付费文件)来获取库文件。
希望建立图书馆的说明将包含在图书馆网站上。正如评论中所指出的,'meta'似乎相当擅长。
当您尝试使用库进行编译时,可能需要命令行选项(例如, -I
)指定包含头文件的目录,您可能需要一个链接器选项(例如 -l
)告诉链接器链接到您的库。
在我看来, Crascit / DownloadProject 在你的情况下可能会有所帮助。它提供 CMake
通过指定从git存储库下载项目的插件 tags
等等然后你可以使用 add_custom_target
要运行命令,您需要构建项目。
有很多流行的C ++发布 nuget包。
您可以在图库中搜索它们,通常使用 native
要么 c++
标签。显然你需要一个nuget管理器用于你的操作系统,我很确定C ++ nuget包依赖于MSBuild来完成很多繁重的工作,所以你可能很难让非面向Visual Studio的设置工作得很好。
Gradle实际上确实有一些支持 原生依赖 同样。我刚才看过一段时间,但由于缺乏对VS 2015的支持,因此对它的工作进行了限制。