我对C世界还很陌生,所以请原谅我问了这么一个愚蠢的问题。我在谷歌上搜索了一下,但没有找到合适的答案。
我的问题很简单-我应该如何在C世界中使用库。例如,在Java中-有maven
和gradle
来完成这项任务。在Python中-我使用pip
。在javascript中,npm
和bower
完成所有的事情。在C#中,你使用nuget
或只是将DLL库添加到你的项目中。但在C中,事情似乎不是这样的。不那么容易。
我发现了一个工具,称为conan
,但他们的库数量相当小,不包括任何我正在寻找的。
例如,我想使用nlp lib meta
,但他们似乎没有提供任何安装文件。所以我假设我需要从Github获取源代码。我应该编译它们,然后尝试将编译后的文件添加到我的项目中,还是需要在我的项目中有一个lib
文件夹,并将meta's
源代码放在这些文件夹中,然后按照meta's
源代码在我的项目中的样子操作它们?
我的问题不是关于如何安装特定的meta
库,而是更多的是从源代码管理的Angular 。例如,如果我在Windows
上使用Visual Studio
,但我的同事将在Linux
下编码Clion
。我不知道在C世界中管理依赖关系的正确方法。
7条答案
按热度按时间wr98u20j1#
C没有类似
pip
或npm/bower
的东西,我不知道是否可以说服maven
或gradle
来处理C库。总的来说,你最终会得到
您可以通过在计算机上构建库文件(通常用于开源项目和针对Linux平台的项目),或者通过下载预编译的二进制文件(通常用于Windows库,尤其是付费库)来获取库文件。
希望图书馆网站上能包含建造图书馆的说明。正如评论中指出的,“ meta”似乎在这方面相当擅长。
当你试图编译库时,你可能需要一个命令行选项(例如
-I
)来指定包含头文件的目录,你可能需要一个链接器选项(例如-l
)来告诉链接器链接到你的库。3qpi33ja2#
Cget可以安装任何使用标准cmake的软件包,并且可以在linux和windows下运行,它简化了直接从github获取软件包的语法(比如
cget install google/googletest
)。此外,还可以通过在
requirements.txt
文件中列出依赖项来自动下载依赖项。也有安装非cmake包的方法,并且仓库here有超过300个库(并且还在增长),所以你可以只使用
cget install pfultz2/cget-recipes curl
来安装curl。jw5wzhpr3#
遗憾的是,C没有库的包管理器。有些包管理器在那里,并试图成为一个仍然很小和分散的库(如柯南)。
在Linux中,你可以安装一些“-dev”包,但它们也不是“全部”。
你最有可能自己下载它们。接下来你会遇到集成这些库的问题。每个操作系统都有不同的构建系统,所以你必须看看你是如何构建c文件的。
就像在windows和Visual studio中一样,你必须得到一个visual studio项目或者一个nmake兼容的makefile来构建库,然后把它们添加到你的项目中。
有几个构建框架是更高级别的,比如
cmake
。你文章中的例子也可以使用CMake。所以把它集成到一个cmake构建环境中会更容易,但是这只适用于其他也试图使用/集成cmake构建环境的库(比如boost / qt就是这样做的)。是的,这是一些想法,遗憾的是,不会有一个简单的/确定的答案,因为没有真实的的中央c++包仓库,也集成到一个构建系统。
sg24os4d4#
在我看来,Crascit/DownloadProject可能对你的情况有所帮助,它提供了
CMake
插件,可以通过指定tags
等参数从git仓库下载项目,然后你可以使用add_custom_target
来运行构建项目所需的命令。u91tlkcl5#
有许多流行的C通过nuget packages发布。你可以在图库中搜索它们,通常使用
native
或c++
标记。显然你需要一个nuget管理器来管理你的操作系统,我非常肯定C nuget包依赖于MSBuild来完成很多繁重的工作,所以你可能很难让一个非Visual Studio导向的安装程序很好地工作。另外,Gradle实际上也有一些对native dependencies的支持。不久前我看了一下,但由于缺乏对VS 2015的支持,它的工作被缩减了。
wnrlj8wa6#
我推荐vcpkg用于跨平台开发,它有很多IDE集成,GitHub项目就是here。
我使用CMake、Visual Studio、WSL等工具进行跨平台开发。vcpkg非常有帮助。
1bqhqjot7#
我开始了新的项目...在curent时间它只是“源代码包管理器”你可以提供一些源代码github,然后它将只是复制到您的项目(基于cmake +自动生成cmake文件)
所以链接在这里:https://github.com/wsjcpp/wsjcpp