C++如何管理依赖关系(例如使用github的库)

qfe3c7zg  于 2022-12-20  发布在  Git
关注(0)|答案(7)|浏览(177)

我对C世界还很陌生,所以请原谅我问了这么一个愚蠢的问题。我在谷歌上搜索了一下,但没有找到合适的答案。
我的问题很简单-我应该如何在C
世界中使用库。例如,在Java中-有mavengradle来完成这项任务。在Python中-我使用pip。在javascript中,npmbower完成所有的事情。在C#中,你使用nuget或只是将DLL库添加到你的项目中。但在C中,事情似乎不是这样的。不那么容易。
我发现了一个工具,称为conan,但他们的库数量相当小,不包括任何我正在寻找的。
例如,我想使用nlp lib meta,但他们似乎没有提供任何安装文件。所以我假设我需要从Github获取源代码。我应该编译它们,然后尝试将编译后的文件添加到我的项目中,还是需要在我的项目中有一个lib文件夹,并将meta's源代码放在这些文件夹中,然后按照meta's源代码在我的项目中的样子操作它们?
我的问题不是关于如何安装特定的meta库,而是更多的是从源代码管理的Angular 。例如,如果我在Windows上使用Visual Studio,但我的同事将在Linux下编码Clion。我不知道在C
世界中管理依赖关系的正确方法。

wr98u20j

wr98u20j1#

C没有类似pipnpm/bower的东西,我不知道是否可以说服mavengradle来处理C库。
总的来说,你最终会得到

  • 某个目录中的头文件
  • 库文件(静态库或DLL/共享对象)。如果库是一个只有头文件的库,就像一些boost库一样,那么你就不需要这个了。

您可以通过在计算机上构建库文件(通常用于开源项目和针对Linux平台的项目),或者通过下载预编译的二进制文件(通常用于Windows库,尤其是付费库)来获取库文件。
希望图书馆网站上能包含建造图书馆的说明。正如评论中指出的,“ meta”似乎在这方面相当擅长。
当你试图编译库时,你可能需要一个命令行选项(例如-I)来指定包含头文件的目录,你可能需要一个链接器选项(例如-l)来告诉链接器链接到你的库。

3qpi33ja

3qpi33ja2#

Cget可以安装任何使用标准cmake的软件包,并且可以在linux和windows下运行,它简化了直接从github获取软件包的语法(比如cget install google/googletest)。
此外,还可以通过在requirements.txt文件中列出依赖项来自动下载依赖项。
也有安装非cmake包的方法,并且仓库here有超过300个库(并且还在增长),所以你可以只使用cget install pfultz2/cget-recipes curl来安装curl。

jw5wzhpr

jw5wzhpr3#

遗憾的是,C没有库的包管理器。有些包管理器在那里,并试图成为一个仍然很小和分散的库(如柯南)。
在Linux中,你可以安装一些“-dev”包,但它们也不是“全部”。
你最有可能自己下载它们。接下来你会遇到集成这些库的问题。每个操作系统都有不同的构建系统,所以你必须看看你是如何构建c
文件的。
就像在windows和Visual studio中一样,你必须得到一个visual studio项目或者一个nmake兼容的makefile来构建库,然后把它们添加到你的项目中。
有几个构建框架是更高级别的,比如cmake。你文章中的例子也可以使用CMake。所以把它集成到一个cmake构建环境中会更容易,但是这只适用于其他也试图使用/集成cmake构建环境的库(比如boost / qt就是这样做的)。
是的,这是一些想法,遗憾的是,不会有一个简单的/确定的答案,因为没有真实的的中央c++包仓库,也集成到一个构建系统。

sg24os4d

sg24os4d4#

在我看来,Crascit/DownloadProject可能对你的情况有所帮助,它提供了CMake插件,可以通过指定tags等参数从git仓库下载项目,然后你可以使用add_custom_target来运行构建项目所需的命令。

u91tlkcl

u91tlkcl5#

有许多流行的C通过nuget packages发布。你可以在图库中搜索它们,通常使用nativec++标记。显然你需要一个nuget管理器来管理你的操作系统,我非常肯定C nuget包依赖于MSBuild来完成很多繁重的工作,所以你可能很难让一个非Visual Studio导向的安装程序很好地工作。
另外,Gradle实际上也有一些对native dependencies的支持。不久前我看了一下,但由于缺乏对VS 2015的支持,它的工作被缩减了。

wnrlj8wa

wnrlj8wa6#

我推荐vcpkg用于跨平台开发,它有很多IDE集成,GitHub项目就是here
我使用CMake、Visual Studio、WSL等工具进行跨平台开发。vcpkg非常有帮助。

1bqhqjot

1bqhqjot7#

我开始了新的项目...在curent时间它只是“源代码包管理器”你可以提供一些源代码github,然后它将只是复制到您的项目(基于cmake +自动生成cmake文件)
所以链接在这里:https://github.com/wsjcpp/wsjcpp

相关问题