vcpkg是一个微软开源的C++包管理器。

在以前的开发中,如果在项目中需要使用某个开源库,例如qt,我们需要取官网下载qt的源码,然后构建得到对应的库,然后在项目中链接这个库。对于自己熟悉的库还好说,若是不熟悉的库,如何拉取源码?如何构建?如何在项目中引用?等等这些问题通常会困扰我们,然而,大多数情况下,我们只是使用这个开源库,并不需要关心这个库的构建和编译等问题。如此,在以前的开发过程中,往往会花费不少的时间在引入开源库上。

vcpkg是在背景下开发出来的,通过vcpkg,我们可以在项目中很方便的引入开源库,不用再关心拉取代码、构建开源库的这些事情。

CMake构建的项目中引入开源库

如果我们的项目是用cmake作为构建系统,那么如何引入开源库呢?

  1. 使用vcpkg安装我们需要的开源库
  2. 在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"
vcpkg是一个微软开源的C++包管理器。在以前的开发中,如果在项目中需要使用某个开源库,例如qt,我们需要取官网下载qt的源码,然后构建得到对应的库,然后在项目中链接这个库。对于自己熟悉的库还好说,若是不熟悉的库,如何拉取源码?如何构建?如何在项目中引用?等等这些问题通常会困扰我们,然而,大多数情况下,我们只是使用这个开源库,并不需要关心这个库的构建和编译等问题。如此,在以前的开发过程中,往往会花费不少的时间在引入开源库上。vcpkg是在背景下开发出来的,通过vcpkg,我们可以在项目中很方便的引
vcpkg :two_hearts: CMake集成 系好安全带,抬起脚来: 在对project(...)调用之前添加include(vcpkg.cmake) [在顶级CMakeListst.txt ] 在您的项目vcpkg.json清单? 是:完成! :rocket: 否:通过调用vcpkg_add_package(<pkg>)添加软件包 完毕! :rocket: # EXAMPLE set (VCPKG_VERSION edge) # optional include (vcpkg.cmake) project (awesome-project) # without 'vcpkg.json'-manifest vcpkg_add_package(fmt) 它有什么作用? 获取vcpkg 如果需要,构建vcpkg vcpkg本身的“数字”或语义版本控制 将vcpkg的musl-libc屏蔽
应该如何使用vcpkg 提供的库呢,vcpkg提供2种使用方式,一种是在CMake 工程使用,另一种是在MSbuild 工程使用,我们分别提供了示例。 如何在CMake 工程使用?示例:sqlite3 第一步: 安装库 PS E:\vcpkg\clean\vcpkg> ./vcpkg install sqlite3:x64-windows Computing installation plan... The following packages will be built and ins
简单CmakeList.txt内容cmake_minimum_required(VERSION 3.11)#引入vcpkg set(CMAKE_TOOLCHAIN_FILE “${CMAKE_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake” CACHE STRING “”) set(ENV{VCPKG_BINARY_SOURCES} “clear;default,readwrite”)project(ac-viewer)set(CMAKE_CXX_STA
1.vckpkg简介: Vcpkg helps you manage C and C++ libraries on Windows, Linux and MacOS. This tool and ecosystem are constantly evolving; your involvement is vital to its success! Vcpk... 这些文件可以通过QtCreator新建一个Qt项目,然后把文件拷贝到cmake项目里面去 3,最关键的还是CMakeLists.txt,最简单的内容如下: cmake_minimum_required(VERSION 3.5.1) project(qui) set(Qt5_DIR "D:/qt5/5.12.9/msvc2017_64/lib/cmake/Qt5") set(CMA CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake" 因此,在接下来,我们使用cmake编译构建工程时可以如下使用: 1、对于在cmd终端或者powershell终端构建camke工程
vcpkg 下载慢非常令人头痛,下面是一位 github 用户的抱怨,非常真实! The download and compilation time of vcpkg is relatively long. So during this waiting period, I would rather go play a game, have a cup of coffee or do some other work. But, but, but! ! ! When the network is not go
drogon 介绍 Drogon是一个基于C++14/17的Http应用框架,使用Drogon可以方便的使用C++构建各种类型的Web应用服务端程序。 本版本库是github上Drogon工程的镜像库。Drogon是作者非常喜欢的美剧《权力的游戏》的一条龙的名字(汉译作卓耿),和龙有关但并不是dragon的误写,为了不至于引起不必要的误会这里说明一下。 其,`cmake_minimum_required` 指定了 CMake 的最低版本要求,`project` 定义了项目名称,`add_executable` 添加了一个可执行文件并指定了源文件。 你可以在 CMakeLists.txt 添加更多的编译选项和依赖库,具体使用方法可以参考 CMake 的官方文档。