[英]C++ how to manage dependencies (use libraries from github for example)
我对 C++ 世界很陌生,所以请原谅我提出这样一个愚蠢的问题。 我谷歌了一下,但无法找到正确的答案。
我的问题很简单 - 我应该如何在 C++ 世界中使用 lib。 例如在 Java 中 - 这个任务有maven
和gradle
。 在 Python 中 - 我使用pip
。 在 javascript npm
和bower
做所有的事情。 在 C# 中,您可以使用nuget
或只是将 DLL 库添加到您的项目中。 但是看起来在 C++ 中事情并不那么容易。
我找到了一个名为conan
的工具,但是他们拥有的库数量非常少,并且不包含任何我想要的东西。
所以,例如 - 我想使用 nlp lib meta
。 好像他们不提供任何安装程序文件。 所以我假设我需要从 github 获取源代码。 我应该编译它们,然后尝试将编译的文件添加到我的项目中,还是我需要在我的项目中有lib
文件夹,并将meta's
源代码放在这些文件夹中,然后像它们在我的项目中一样使用meta's
源代码进行操作?
我的问题不是关于如何安装特定的meta
库,而是更多从源代码管理的角度来看。 例如,如果我在Windows
上使用Visual Studio
,但我的同事将在Linux
下编码Clion
。 而且我不想意识到在 C++ 世界中管理依赖项的正确方法是什么。
C++ 没有像pip
或npm/bower
这样的东西。 我不知道是否可以说服maven
或gradle
来处理 C++ 库。
一般来说,你将不得不结束
您可以通过在您的机器上构建它们来获取库文件(通常用于开源项目和针对 Linux 平台的项目),或者通过下载预编译的二进制文件(通常用于 Windows 库,特别是付费的)。
希望图书馆网站上将包含构建图书馆的说明。 正如评论中所指出的,“元”似乎非常擅长。
当您尝试使用库进行编译时,您可能需要一个命令行选项(例如-I
)来指定包含头文件的目录,并且您可能需要一个链接器选项(例如-l
)来告诉链接器根据您的图书馆。
遗憾的是,C++ 没有库的包管理器。 有些人在那里并试图成为一个仍然小而分散的人(如柯南)。
在 linux 中,您可以安装一些“-dev”包,但它们也不是“全部”。
您很可能最终自己下载它们。 不过接下来是集成这些库的问题。 每个操作系统都有不同的构建系统,因此您必须了解如何构建 C++ 文件。
就像在带有 Visual Studio 的 Windows 中一样,您必须获得一个 Visual Studio 项目或一个与 nmake 兼容的 makefile 来构建库,然后将它们添加到您的项目中。 与 linux makefile 相同。
有几个构建框架的级别更高,例如cmake
。 您在帖子中的示例也适用于 CMake。 因此,将其集成到 cmake 构建环境中会更容易,但这仅适用于也尝试使用/集成 cmake 构建环境的其他库(例如 boost / qt 正在这样做)。
是的,这些是对此的一些想法。 遗憾的是,对此不会有一个简单/明确的答案,因为没有真正的中央 C++ 数据包存储库也集成到构建系统中。
在我看来Crascit/DownloadProject可能对您的情况有所帮助。 它提供了CMake
插件,用于通过指定tags
等从 git 存储库下载项目。然后您可以使用add_custom_target
运行您需要构建项目的命令。
我开始了新项目......在当前它只是“源包管理器”,你可以在github上提供一些源代码,然后它就会被复制到你的项目中(基于cmake +自动生成cmake文件)
所以链接在这里: https : //github.com/wsjcpp/wsjcpp
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.