你们中的许多人可能知道NuGet是.NET开发的“去”库存储库,但对于C++来说,它又是什么呢?这里的答案可能会让你吃惊,因为许多顶级开源C++库实际上都在NuGET画廊中。
对于那些以前没有使用过NuGet的人来说,NuGet是微软开发平台的包管理器系统。从NuGet gallery向VisualStudio项目添加库包非常简单,只需单击一个安装按钮即可。这个画廊从.NET图书馆开始,现在我们正在致力于让更多的C++图书馆进入它的生态系统。
让我们看看C++开发人员在NuGueGuelo中已经具备的内容。
类别 |
姓名 |
版本(NuGet/最新) |
细节 |
一般用途 |
1.57/1.57 |
完整的推进包和卫星二进制包。对于Visual C++ 2013/2012/2010 |
|
图形用户界面 |
2.4.2/2.4.2 |
包是帮助建立一个C++项目使用WxWIDGET的助手。 |
|
9.0/9.0 |
Windows模板库(WTL)是一个用于开发Windows应用程序和UI组件的C++库 |
||
绘图 |
1.83/1.90 |
最流行的开源图形渲染引擎之一。 |
|
2015.1/2015.1 |
它是C++中编写DirectX 11 .x代码的助手类的集合。 |
||
2.8.1/2.8.1 |
免费的openGL实用工具包,是markkilgard的GLUT库的免费替代品。 |
||
1.9.0/1.12.0 |
GLEW提供了高效的运行时机制,用于确定目标平台上支持哪些OpenGL扩展。 |
||
3.0/3.4 |
GLFW是一个开源的、多平台的库,用于创建带有OpenGL上下文的窗口以及管理输入和事件。 |
||
科学的 |
3.2.3/3.2.4 |
EGIGN是一个用于线性代数的C++模板库:矩阵、向量、数值求解器和相关算法。 |
|
2.4.9/2.4.10 |
OpenCV(opensourcecomputervision)是一个用于实时计算机视觉的编程函数库。 |
||
多媒体 |
2.0.3/2.0.3 |
简单的DirectMedia层,一个通用API,提供跨多个平台的音频、键盘、鼠标和显示帧缓冲区的低级访问。 |
|
2.2/2.2 |
SFML为PC的各个组件提供了一个简单的接口,以简化游戏和多媒体应用程序的开发。系统、窗口、图形、音频和网络五个模块共有五个软件包。 |
||
3.2171/3.2171 |
Chromium Embedded Framework(CEF)是一个简单的框架,用于在其他应用程序中嵌入基于Chromium的浏览器。 |
||
网络 |
1.01/1.02 |
安全套接字层(sslv2/v3)和传输层安全(TLS)协议的实现,以及一个全强度通用加密库。 |
|
1.4.3/1.4.3 |
Libssh2是实现SSH2协议的客户端C库。 |
||
1.4.6/1.4.7 |
现代、强大的开源C++类库和框架,用于构建基于桌面和服务器、移动和嵌入式系统的网络和基于互联网的应用程序。1.4.6是维护版本。包括多个程序包。 |
||
2.4.0.1/2.4.0.1 |
跨平台库支持使用现代异步C++ API设计的本地代码中基于云的客户端-服务器通信。 |
||
0.5.0/0.5.0 |
此客户端库允许使用Microsoft Azure存储服务,其中包括用于存储二进制和文本数据的blob服务、用于存储结构化非关系数据的表服务以及用于存储客户端可能访问的消息的队列服务。 |
||
7.30/7.40 |
Curl是一个工具,libcurl是一个用URL语法传输数据的库,支持DICT、FILE、FTP、FTPS、GOPHER、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAP、POP3、POP3S、RTMP、RTSP、SCP、SFTP、SMTP、SMTPS、TELNET和TFTP。有很多特点。 |
||
数据库 |
3.8.4.2/3.8.7.2 |
SQLite是一个进程内库,它实现了一个自包含的、无服务器的、零配置的事务性SQL数据库引擎。 |
|
3.2.0/3.2.2 |
SOCI为C++程序员提供了一种以最自然和直观的方式访问多个SQL数据库的方法。 |
||
实用程序 |
1.2.8/1.2.8 |
一个庞大而精致的压缩库。 |
|
2.7.8/2.9.2 |
Libxml2是可用于多种语言和平台的xmlc解析器和工具箱。 |
||
2.1/2.2 |
TIYXXML-2是一个简单、小型、高效的C++ XML解析器,可以很容易地集成到其他程序中。 |
||
0.6/0.6 |
与JSON交互的C++库。 |
||
2.9.1/2.9.1 |
用POSIX线程编写多线程应用程序的库。这是一个Win32软件包。 |
||
编解码器 |
9.0/9.0 |
这个软件包包含C软件来实现JPEG图像的编码、解码和转码。 |
|
1.5.10/1.6.16 |
libpng是官方的PNG参考图书馆。 |
看到熟悉的东西想试试吗?尽管如此,但请记住,对于大多数应用程序,您可能需要VisualStudio2013(或express版本)。如果你最喜欢的库不在列表中,我们只列出了C++包的一小部分,不要觉得不好。更多本机库可以在 画廊 ,还有请 做评论 在博客之后,如果你认为一些重要的C++库从画廊中丢失,或者列表上的一些包对你不起作用。
C++的NuGET
从NuGet安装C++包与.NET没有什么不同。如果您知道包名,则可以通过NuGet控制台键入“Install Package[Package name]”来安装包,也可以直接安装 使用“ManageNuGetPackage”窗口(图2)找到并安装,该窗口可以从项目上下文菜单(图1)中打开。
图1
图2
所有项目依赖项,包括路径和库路径都将自动添加到vcxproj中。在极少数情况下,您可能需要手动将DLL复制到二进制文件夹以运行某些软件包的程序。
值得注意的是,C++的NuGET仍然有一些限制。您可能会发现在搜索结果中区分C++包与.NET包的困难。“添加标记筛选器”tags:native“你的搜索框可以给你更准确的结果。您需要注意的另一件事是包的兼容性。大多数NuGet包的目标是visualstudio的特定版本;并非每个包都支持所有处理器体系结构。
我们在听
我们希望NuGET包系统能在Windows上为C++带来最好的图书馆分发体验。您的反馈是至关重要的,因为我们考虑添加更多的C++包和NuGET的特性。