vcpkg的使用
这篇文章是介绍下vcpkg的使用,为啥是vcpkg,这个就不说了,用过的都说好,我们配合vscode和cmake来使用这个c++的包管理器,我们将会通过一个简单的例子来介绍怎么使用,(本来是不打算写了,因为官网的文档不错,但是过了一段时间后发现再使用vcpkg发现不会用了,因此记录下吧)
配置vcpkg的环境
先git
下来vcpkg的源码(需要使用魔法才能上网)
git clone https://github.com/microsoft/vcpkg.git
然后执行下下面的命令
cd vcpkg
./bootstrap-vcpkg.sh
执行完后,vcpkg就安装完成了,下面就是设置下环境变量了,这里是linux的环境变量,这里我直接将语句添加到了~/.bashrc
,语句如下
export VCPKG_ROOT=//path/vcpkg
export PATH=$PATH:$VCPKG_ROOT
然后就可以直接使用vcpkg命令了,这里需要source ~/.bashrc
下,激活下环境变量就行
使用vcpkg
下面就是使用vcpkg了,使用起来还是非常简单的,下面我来简单介绍下,这里的背景就是我们的项目使用到了fmt
这个第三方库,如果我们不使用vcpkg的话,就需要自己安装fmt
,下载源码、编译源码然后安装,还是挺麻烦的,这里我们看下vcpkg怎么简化流程
首先我们进入项目根目录,这里假设项目目录是cppCmakeVcpkg
,下面就是一些命令
cd cppCmakeVcpkg
vcpkg new --application
vcpkg add port fmt
执行完命令后,根目录就会多出两个文件vcpkg-configuration.json, vcpkg.json
,我们看内容就可以看出,vcpkg.json
就是我们依赖的包,然后我们需要配置下CMakePresets.json
这里来配置一些信息,主要是CMAKE_TOOLCHAIN_FILE
字段,用来配置vcpkg工具链的路径位置的,比我我们简单的样例
{
"version": 2,
"configurePresets": [
{
"name": "vcpkgmake",
"generator": "Unix Makefiles",
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
}
}
]
}
这样就搞好了,可以直接进行build了,可以使用命令行,也可以直接使用vscode,他会直接下载fmt
包直接在项目中使用,第一次构建会慢一点,因为需要配置fmt
第三方包,后面的构建就快了。
源代码
helloworld.cpp
#include <fmt/core.h>
#include <iostream>
int main()
{
fmt::print("Hello World!\n");
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(HelloWorld)
find_package(fmt CONFIG REQUIRED)
add_executable(HelloWorld helloworld.cpp)
target_link_libraries(HelloWorld PRIVATE fmt::fmt)
vcpkg作为cpp的包管理器还是可以的,好用也不难,在实习期间了解到的工具,大家可以使用下,后面我还会介绍下bazel这个包管理器,因为我看项目的时候看到这个工具了,大型项目都用。