一、前言
C/C++的无所不能,很大程度上体现在其几十年的积累上,也就是第三方库上。
如果你不会使用第三方库,那么就算你C/C++学完,也依旧很难做出东西来的。
所以本章的目的就是带大家学习如何使用第三方库,也就是开源项目。
这是一个非常广阔的话题,每当你在网上看到各种与编程相关的话题时,你都会看到各种关于开源的内容
但对于新手而言,有些问题可能会非常迷惑:
- 开源,即开放源代码嘛,但我应该如何下载呢?
- 我在什么
gitee
,github
之内的网站上面把源代码下载下来了,怎么就不能用呢? - 我平时都使用的
VS
,都有一个项目文件可以直接打开,为什么下载下来的这些项目里面,文件都奇奇怪怪的?也没项目文件呐!
想要更进一步,学习开源库这个过程肯定是必不可少的,所以本章就带着这三个问题,用一用常见的开源项目,详细介绍从下载都使用的全过程
一、几个问题
1.什么是开源项目?
所谓开源项目,就是指项目的作者将自己写的一个项目源代码公开放在网上,我们其它程序员可以直接下载下来使用即可,避免重复造轮子
2.去哪里下?
就个人推荐而言,当然是去github了
因为它号称全世界最大的“同性交友网站”,即绝大部分程序员都会在上面留下自己的一点痕迹,据大部分项目也都会挂在这个网站上面。
但由于某些众所周知的原因,国内访问这个网站很不稳定,很多时候可能你甚至都访问不了
如果你确实对此没找到解决办法的话,可以私聊我获取相关教程
也正因为经常访问不上,所以国内也就有了一个github
的替代品:gitee
,虽然与github
相比逊色不少,但同样也有不少出名的项目在上面。
而且有些出名的github
项目,也会有人同步到gitee
上,因为gitee
是国内的,不存在访问不了的情况
3.如何下载?
对于老手而言,那自然是可以用git这个软件,可以点击这里去官网下载:
但大多时候,对于新手而言,并不用管什么项目管理之内的, 因为我们只想使用这个库而已
所以我们可以直接来到开源项目的主页
直接点击code
, 下载压缩包到本地解压即可, 很方便
至于之后如何使用下载下来的源文件, 就需要看这个README.md
文件了
这基本是所有开源项目都有的一个文件,就在根目录下面,
github
以及gitee
等等也会在项目主页默认显示这个文件中的内容
你就可以从这些说明中了解这个项目的使用流程
二、vcpkg配置第三方库
在介绍众多其它开源库之前, 我们必须先清楚想要使用开源项目的底层流程:
-
很多开源项目的作者都只提供源代码, 以及编译源代码的教程(甚至没有编译教程),因此很多时候,如果仅仅只是下载下来源代码,是无法使用的
-
所以,接下来你就需要根据教程(或自己的经验), 下载安装其它编译这个源代码的工具, 最后再一步一步可能会用多种软件进行编译,得到编译好的库文件
-
最后,将这些编译好的库、头文件添加到自己的项目中,这才能使用
这是一件非常麻烦的事情, 也是劝退很多新手的重要原因
python
就不同了,它有个pip
工具,可以用简单的一句命令就完成上述的所有任务, 这也是python
能够流行起来的原因之一
但幸好, C++
也并非没有解决办法, 这就是我们这里第一个提到的开源项目 vcpkg
, 它便是一个帮助我们管理各种包的工具
而且它与VS适配的非常好, 你可以一句命令就安装好你想要的的包, 并且在VS里面你就可以直接使用,无需任何额外的操作
上面说了这么多, 就会为了让你知道这个vcpkg
多么好用, 那么下面我们就开始正式使用吧
点击这里前往官方地址。
直接按前面所说的,下载这个压缩包到本地, 解压即可, 如果你没法访问下载这个压缩包, 那么也就意味着后面你也根本无法使用这个软件。
因为这个项目管理其它包都是通过其官网的链接,而很多链接都是国外的,所以我这里就不提供它的压缩包了
解压后,在控制台中进入这个文件夹:
注意,这个目录就是这个软件的工作目录, 所以最好放在一个比较稳妥的地方,再执行下面操作。
首先执行下面这句命令:
.\bootstrap-vcpkg.bat
这就完成了,但我们还需要集成到VS中,直接使用,所以还需要继续执行下面这句命令:
.\vcpkg.exe integrate install
是不是非常简单!
当你想要安装某个开源库的时候, 一般需要先搜索一下是否支持:
.\vcpkg.exe search name
比如我这里用我的vcpkg
,来搜索json
相关库:
前面的就是各个库的名称
然后如果你看到了有自己想要的库, 你就可以直接安装:
.\vcpkg.exe install name
这个默认安装的是x86版本,想要安装x64版本,你就可以像下面这样写:
.\vcpkg.exe install name:x64-windows
就是在包名的后面,加上:x64-windows
即可
这样我们就完成了这个库的安装!
安装后,可以在这个文件夹中的installed
文件夹中查看已经安装的库:
我这里只有x64文件夹,因为我现在一般用的都是x64,如果你安装x86的库,就会多一个x86-windows
的文件夹,这个文件夹里面就是这些库的头文件。
然后我们也可以在VS中的项目设置中看到对应的配置项:
同时注意上图中的配置版本,如果与你的项目版本对不上,可能就得自己手动更改一下,不然会报错
但正常情况下是不会出错的,所以基本上你不用更改任何东西
同时,以后你使用这个工具安装的库,包含其头文件时,既可以使用<>
,也可使用""
如后面的sqlite3
库
#include<sqlite3>
与
#include"sqlite3"
两种方式均可
三、手动配置第三方库
使用vcpkg
确实很方便,但它也有问题:
- 如果不会科学上网,几乎无法使用
bug
很多,尤其是新版本的库,经常下载编译失败
所以这里我也还是要提一下如何在项目中使用我们手动下载编译好的库。
首先我们要知道的是,一个C/C++开源库编译的结果,一般都会包含以下几部分:
- include文件夹:里面存放的都是这个项目所需的头文件。
- lib文件夹:里面存放编译好的库。
然后我们需要做的就是,将这两个文件夹复制到我们自己的项目文件夹中。
如果lib文件夹中库文件比较少,比如像我这里只有一个的,也可以直接将这个库文件复制过来就行了。
这里以本站C语言实现推箱子专栏中使用的第三方库EGE为例。
然后大部分库,这样做之后就已经可以正常使用了,你可以在代码中这样包含这个库:
#include"include/graphics.h"
#pragma comment(lib,"graphics64.lib")
但有些库可能必须要让你使用**尖括号<>**的方式来包含库,那就得像下面这样做。
在vs的项目中,找到当前的项目属性:
注意属性上面的配置要和当前项目的配置一样,才能生效:
主要需要做的就是,将include文件夹包含进来,写在后面即可,各个路径用英文分号(;
)隔开。
这样你包含目录的方式就是使用尖括号了#include<>
。
如果你使用的lib文件夹,那也可以在下面的库目录添加你的lib
文件夹路径。
但有时候还有动态库,怎么办呢?一般我们采取的方式,是直接将动态库复制到当前项目文件夹下即可。
上面这些选项都有默认值,这些值都是变量,不要管它们,直接将路径复制到它们之前或之后,各个值之间用;
隔开即可。