说明
本文记录自己使用vcpkg.json文件自动安装依赖库并完成编译的全过程。
关于vcpkg是什么这里就不多详细解释,可以看一下专门的介绍及安装的文章,总之了解这是一个C++的包管理工具就可以了。
流程
下面介绍从GitHub上克隆C++项目以及为这个项目安装所需依赖项,并完成编译的全过程。
1 拉取项目
在GitHub上找到你想要克隆的项目,复制地址。
得到地址后,在你想要复制项目的文件夹中右击,选"open git bash here"
输入git clone + 复制的地址
等待项目克隆完成
2 编辑vcpkg.json文件
这一步的前提是电脑上已经安装了vcpkg,并将它的路径同步到了环境变量中,记住这个环境变量的名称,在编写CMakeLists文件时要用,如图
没有安装的话需要找教程安装一下。
然后根据该项目在README中所描述的依赖项编写vcpkg.json
编写vcpkg.json文件
{
"name": "electric-inspection-backend",
"version-string": "0.0.1",
"dependencies": [
"boost",
"cgal",
"lastools",
"spdlog",
"cxxopts",
"tbb",
"jsoncpp",
"shapelib",
"eigen3",
"glm",
"gmp",
"mpfr",
"ceres",
"libpng",
"libjpeg-turbo",
"tiff",
"glew",
"glad",
"glfw3"
]
}
- name:项目的名称,标识这个 vcpkg.json 文件所描述的项目。无需在意,这个的作用只是为了写编译过程中的日志文件。
- version-string:项目版本号,取决于自己,可直接复制。
- dependencies:依赖库列表
这里安装的库明显比要求的多,这是因为有些库并没有在README中写明。不过你在后续使用cmake构建时,会提醒你却库,在这里再添加就好。
3 修改CMakeLists文件
此时需要修改项目根目录下的CMakeLists.txt文件,使其能够连接到vcpkg,自动识别vcpkg.json文件,并开始安装依赖库。
注意,vcpkg相关配置代码必须在project之前,否则无法自动识别vcpkg.json文件,可从下面复制
# vcpkg配置,必须位于project之前
if(DEFINED ENV{VCPKG_ROOT})
set(VCPKG_ROOT "$ENV{VCPKG_ROOT}" CACHE PATH "") # 从环境变量中读取vcpkg根目录
else()
set(VCPKG_ROOT "E:/vcpkg_clone" CACHE PATH "") # 手动设置vcpkg根目录
endif()
message("set VCPKG_ROOT: ${VCPKG_ROOT}")
set(VCPKG_FEATURE_FLAGS "version") # 用于支持自定义依赖版本
set(CMAKE_TOOLCHAIN_FILE "${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake") # 设置vcpkg工具链
构建项目
接下来就可以开始使用cmake指令来构建项目,指令可参照该项目在GitHub上给定的指令顺序
摁住shift右击,打开PowerShell窗口,输入命令,开始安装
安装完成
这时可以看到build文件夹中多出了 vcpkg_installed 文件,这就是该项目依赖项的安装位置。
然后启动解决方案,运行就可以了。
注意:之后可能代码中还会出现错误,但是这与依赖项安装就没关系了。我这里就出现了一些代码上的错误,查资料改一下就可以运行了。