CMake中使用vcpkg

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

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

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

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

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

  • 使用vcpkg安装我们需要的开源库
  • 在CMakeLists中引入需要的开源库

vcpkg安装开源库

例如需要使用QtWidgets,打开powershell,输入vcpkg install qt5-base

CMakeLists中引入开源库目录结构:在路径D:\Document\MyCode\vcpkgsample下|

css 复制代码
|--main.cpp
|--CMakeLists.txt
scss 复制代码
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代码如下

arduino 复制代码
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    return a.exec();
}

打开x86 Command Prompt 命令行,依次输入

bash 复制代码
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 解决方案,执行编译。

ini 复制代码
msbuild VcpkgSample.sln /p:platform="Win32"
相关推荐
日月云棠5 分钟前
12 Enum —— 枚举类型的底层实现
java·后端
工位植物人5 分钟前
深入理解Java中的类、抽象类、接口与枚举类
后端
用户2181697049306 分钟前
Gin (二) 参数 路由分组
后端
8Qi89 分钟前
LeetCode 76. 最小覆盖子串(Minimum Window Substring)
数据结构·算法·leetcode·滑动窗口·哈希表
用户925807911489 分钟前
nacos服务注册源码浅析
后端
weixin_BYSJ198710 分钟前
springboot旅游管理系统04470(附源码+开发文档+部署教程)
java·spring boot·python·算法·django·flask·旅游
Bingorl12 分钟前
机器学习之朴素贝叶斯算法
人工智能·算法·机器学习
8Qi813 分钟前
LeetCode 209. 长度最小的子数组(Minimum Size Subarray Sum)
java·算法·leetcode·双指针·滑动窗口
SimonKing15 分钟前
Java程序员接入AI的另一种姿势:LangChain4j
java·后端·程序员
右耳朵猫AI24 分钟前
Rust技术周刊 2026年第20周
开发语言·后端·rust