Bootstrap

vcpkg的简单使用

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这个包管理器,因为我看项目的时候看到这个工具了,大型项目都用。

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;