vcpkg是一个微软开源的C++包管理器。
在以前的开发中,如果在项目中需要使用某个开源库,例如qt,我们需要取官网下载qt的源码,然后构建得到对应的库,然后在项目中链接这个库。对于自己熟悉的库还好说,若是不熟悉的库,如何拉取源码?如何构建?如何在项目中引用?等等这些问题通常会困扰我们,然而,大多数情况下,我们只是使用这个开源库,并不需要关心这个库的构建和编译等问题。如此,在以前的开发过程中,往往会花费不少的时间在引入开源库上。
vcpkg是在背景下开发出来的,通过vcpkg,我们可以在项目中很方便的引入开源库,不用再关心拉取代码、构建开源库的这些事情。
CMake构建的项目中引入开源库
如果我们的项目是用cmake作为构建系统,那么如何引入开源库呢?
- 使用vcpkg安装我们需要的开源库
- 在CMakeLists中引入需要的开源库
vcpkg安装开源库
例如需要使用QtWidgets,打开powershell,输入vcpkg install qt5-base
CMakeLists中引入开源库目录结构:在路径D:\Document\MyCode\vcpkgsample下|
|–main.cpp |–CMakeLists.txt
cmake_minimum_required(VERSION 2.8.12) #设置CMAKE_TOOLCHAIN_FILE 将vcpkg.cmake的路径赋值给CMAKE_TOOLCHAIN_FILE变量。必须在project函数 #之前设置 SET(CMAKE_TOOLCHAIN_FILE "${VCPKG_ROOT}\\vcpkg\\scripts\\buildsystems\\vcpkg.cmake") project(VcpkgSample) set(EXECUTABLE_NAME VcpkgSample) #添加qt5widgets库的目录 find_package(qt5widgets QUIET CONFIG REQUIRED) add_executable(${EXECUTABLE_NAME} main.cpp) #链接qt5widgets库 target_link_libraries(${EXECUTABLE_NAME}${Qt5Widgets_LIBRARIES})
main.cpp代码如下
#include <QtWidgets/QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); return a.exec(); }
打开x86 Command Prompt 命令行,依次输入
cd /D D:\Document\MyCode\vcpkgsample mkdir build cd build cmake -G"Visual Studio 15 2017" .. -DVCPKG_ROOT="E:\code"
其中 VCPKG_ROOT选项是指定vcpkg安装的目录,本机安装在E:\code目录下。
就在build目录下,生成了vs2017 解决方案,执行编译。
msbuild VcpkgSample.sln /p:platform="Win32"