在CMake工程中使用vcpkg提供的库

2023-05-16

应该如何使用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 installed:

    sqlite3[core]:x64-windows -> 3.34.1

Detecting compiler hash for triplet x64-windows...
Could not locate cached archive: C:\Users\phoebe\AppData\Local\vcpkg\archives\1e\1e772ef47022be1c658daf2d07997ec134ada023.zip
Starting package 1/1: sqlite3:x64-windows
Building package sqlite3[core]:x64-windows...
-- Downloading https://sqlite.org/2021/sqlite-amalgamation-3340100.zip -> sqlite-amalgamation-3340100.zip...
-- Extracting source E:/vcpkg/clean/vcpkg/downloads/sqlite-amalgamation-3340100.zip
-- Applying patch fix-arm-uwp.patch
-- Using source at E:/vcpkg/clean/vcpkg/buildtrees/sqlite3/src/3340100-3d888d9856.clean
-- Configuring x64-windows
-- Building x64-windows-dbg
-- Building x64-windows-rel
-- Performing post-build validation
-- Performing post-build validation done
Stored binary cache: C:\Users\phoebe\AppData\Local\vcpkg\archives\1e\1e772ef47022be1c658daf2d07997ec134ada023.zip
Building package sqlite3[core]:x64-windows... done
Installing package sqlite3[core]:x64-windows...
Installing package sqlite3[core]:x64-windows... done
Elapsed time for package sqlite3:x64-windows: 38.07 s
 
Total elapsed time: 54.06 s

The package sqlite3:x64-windows provides CMake targets:

    find_package(unofficial-sqlite3 CONFIG REQUIRED)
    target_link_libraries(main PRIVATE unofficial::sqlite3::sqlite3)
  

第二步:集成

通过以下命令可以把vcpkg提供的库集成到我们的工程中,之后的文章会详细介绍这部分内容,现在只需要拿到toolchain 文件。


PS E:\vcpkg\clean\vcpkg> ./vcpkg integrate install

Applied user-wide integration for this vcpkg root.
All MSBuild C++ projects can now #include any installed libraries.
Linking will be handled automatically.
Installing new libraries will make them instantly available.

CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=E:/vcpkg/clean/vcpkg/scripts/buildsystems/vcpkg.cmake"  

第三步:使用

我们可以通过visual studio IDE 集成cmake 来使用vcpkg 提供的库, 也可以通过cmake 命令行直接来使用,以下分别给出示例。

CMake 命令行使用示例:

1,在 E:\vcpkg\vcpkgtest\sliqte3 目录下创建文件CMakeLists.txt 与 main.cpp文件。


# CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
project(test)

find_package(unofficial-sqlite3 CONFIG REQUIRED)
add_executable(main main.cpp)
target_link_libraries(main PRIVATE unofficial::sqlite3::sqlite3)  

// main.cpp
#include <sqlite3.h>
#include <stdio.h>

int main()
{
    printf("%s\n", sqlite3_libversion());
    return 0;
}
  

2, 打开x64 Native Tools 命令框,执行以下命令创建build文件夹 并进入build目录。


**********************************************************************

** Visual Studio 2019 Developer Command Prompt v16.9.0

** Copyright (c) 2021 Microsoft Corporation

**********************************************************************

[vcvarsall.bat] Environment initialized for: 'x64'

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community>pushd E:\vcpkg\vcpkgtest\sliqte3

E:\vcpkg\vcpkgtest\sliqte3>mkdir build

E:\vcpkg\vcpkgtest\sliqte3>cd build
  

3, 执行CMake 命令生成VS工程文件。


cmake.exe .. -G "Visual Studio 16 2019" -DCMAKE_TOOLCHAIN_FILE=E:/vcpkg/clean/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows  

注意:CMAKE_TOOLCHAIN_FILE 文件就是在第二步集成时获取的,VCPKG_TARGET_TRIPLET需要与安装sqlite3选用的triplet保持一致。

输出信息:


E:\vcpkg\vcpkgtest\sliqte3\build>cmake.exe .. -G "Visual Studio 16 2019" -DCMAKE_TOOLCHAIN_FILE=E:/vcpkg/clean/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -DVCPKG_BUILD_TYPE=debug
-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.19042.
-- The C compiler identification is MSVC 19.28.29910.0
-- The CXX compiler identification is MSVC 19.28.29910.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29910/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29910/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: E:/vcpkg/vcpkgtest/sliqte3/build  

 4, 构建


E:\vcpkg\vcpkgtest\sliqte3\build>cmake --build .
Microsoft (R) Build Engine version 16.9.0+57a23d249 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
  Checking Build System
  Building Custom Rule E:/vcpkg/vcpkgtest/sliqte3/CMakeLists.txt
  main.cpp
  main.vcxproj -> E:\vcpkg\vcpkgtest\sliqte3\build\Debug\main.exe
  Building Custom Rule E:/vcpkg/vcpkgtest/sliqte3/CMakeLists.txt  

5,测试


E:\vcpkg\vcpkgtest\sliqte3\build> .\Debug\main.exe
3.34.1
  

通过visual studio IDE 集成cmake 来使用示例:

1,创建cmake 工程 ‘sqlite3test’。

2,修改CMakeSettings.json配置文件。


{
  "configurations": [
    {
      "name": "x64-Debug",
      "generator": "Visual Studio 16 2019 Win64",
      "configurationType": "Debug",
      "inheritEnvironments": [ "msvc_x64_x64" ],
      "buildRoot": "${projectDir}\\out\\build\\${name}",
      "installRoot": "${projectDir}\\out\\install\\${name}",
      "cmakeCommandArgs": "-DCMAKE_TOOLCHAIN_FILE=E:/vcpkg/clean/vcpkg/scripts/buildsystems/vcpkg.cmake",
      "buildCommandArgs": "",
      "ctestCommandArgs": ""
    }
  ]
}
  

3, 打开 与Sqlite3test.cpp 同一级目录的CMakeLists.txt 文件, 添加:


  find_package(unofficial-sqlite3 CONFIG REQUIRED)
  target_link_libraries(sqlite3test PRIVATE unofficial::sqlite3::sqlite3)  

 4,打开 Sqlite3test.cpp 添加:


  // Sqlite3test.cpp
  #include "sqlite3test.h"
  #include <sqlite3.h>
  #include <stdio.h>

  int main()
  {
      printf("%s\n", sqlite3_libversion());
      return 0;
  }  

5,CMakeSettings.json 保存之后会自动配置生成 vs 工程文件,现在只需要build 这个工程, 选中最外层的CMakeLists.txt 文件 点击build。

6,构建好之后,选中sqlite3test.exe, 并且点击运行测试。

可以看到执行的结果是:

3.34.1

注意:如果需要改动 CMakeSettings.json配置文件,最好把CMake cache 文件删掉,重新再生成一遍。

   首次发布于 https://www.cnblogs.com/vcpkg/p/14550478.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在CMake工程中使用vcpkg提供的库 的相关文章

  • win10系统更新错误代码0x80244022怎么办

    win10更新错误代码0x80244022怎么办 xff1f Windows 10的自动更新机制虽然让我们省心不少 xff0c 但是难免也会遇到Windows更新失败的问题 xff0c 在使用电脑系统的过程中 xff0c 我们经常会遇到各种
  • 使用pdfcrack破解PDF密码(Linux)

    pdfcrack是破解PDF保护密码的Linux命令行工具 安装pdfcrack Debian系列 xff1a span class c apt install pdfcrack span 暴力破解 span class c pdfcrac
  • win10安全中心打开是空白的怎么解决

    安全中心是电脑系统自带的防护机制 xff0c 用户可以打开安全中心去进行各种安全设置 有些win10用户在打开安全中心的时候发现是一片空白 xff0c 只有安全性概览 xff0c 这是怎么回事呢 很有可能是因为你使用了优化软件 xff0c
  • Win10 Word背景默认是绿色的怎么取消?

    Win10 Word背景豆绿色怎么取消 xff1f 一些朋友发现自己打开word文档 xff0c 默认背景是绿色的 xff0c 虽然有很多用户喜欢 xff0c 但是也有很多朋友不喜欢这样 xff0c 大家想知道如何取消豆沙绿背景 xff0c
  • Win11老是提示资源管理器已停止工作怎么解决

    资源管理器是Windows 系统提供的资源管理工具 xff0c 我们可以用它查看本台电脑的所有资源 xff0c 还可以对文件进行各种操作 xff0c 如 xff1a 打开 复制 移动等 但是近期有部分用户在电脑的使用中老是出现系统提示Win
  • Win7系统explorer占用cpu过高怎么解决

    Win7explorer占用cpu过高怎么办 xff1f 如果出现这样的情况就需要注意了 xff0c 很有可能是电脑配置的问题 xff0c 又或者电脑感染病毒之类的 xff0c 如果你也遇到了同样的问题 xff0c 那么就来看看下面这篇Wi
  • 找不到msvcp140.dll无法继续执行代码,要怎么去解决?

    很多人咨询小编 xff0c 说他在使用电脑的过程中经常会遇到找不到msvcp140 dll无法继续执行代码 xff0c 他一脸懵逼不知道如何进行解决 xff0c 其实这个是我们电脑中的组件运行库丢失所导致的 要解决这个问题也不难 xff0c
  • 电脑蓝屏按哪三个键恢复?怎么修复蓝屏问题

    最近有人在咨询小编 xff0c 说电脑蓝屏按哪三个键恢复 xff1f 我一脸懵逼 xff0c 还有这操作么 xff1f 其实如果发你的电脑一开机就蓝屏 xff0c 一开机就蓝屏 xff0c 没办法进入系统的话 xff0c 那么你就需要用另外
  • msvcr120.dll丢失怎样修复?msvcr120.dll文件修复方法

    Dll文件的丢失相信很多人都遇到过吧 xff1f 其实只要丢失了dll文件 xff0c 那么你打开软件程序或者游戏的时候 xff0c 就会发现打不开 xff0c 提升你文件缺失 xff0c 特别是msvcr120 dll丢失这个经常发生 x
  • msvcp140.dll是什么?怎么修复msvcp140.dll缺失的问题

    小编最近遇到这样的一个dll丢失问题 xff0c 系统无端端弹出说我msvcp140 dll丢失了 xff0c 并且无法启动一些软件程序 xff0c 于是乎小编就针对于这问题查询了相关的解决方法 xff0c 今天就来给大家详细的说说 xff
  • opencl.dll丢失怎么办?为什么会丢失?

    电脑是我们生活当中不可缺少的一个重要工具 xff0c 很多时候我们会用电脑来解决很多问题 xff0c 但是有些朋友会发现 xff0c 电脑在使用的过程中 xff0c 经常会出现各种各样的错误 xff0c 特别是在打开一些文件的时候 xff0
  • 找不到msvcr110dll,无法继续执行代码,解决方法分享

    找不到msvcr110dll 无法继续执行代码 xff0c 电脑出现这种情况 xff0c 主要是缺失了msvcr110dll这个文件 要解决这个问题 xff0c 其实不难 xff0c 有多种方法 第一种解决msvcr110dll的方法 1在
  • Kali Linux ettercap的使用

    ettercap是执行ARP欺骗嗅探的工具 xff0c 通常用它来施行中间人攻击 我使用的是Kali Linux 2 0 xff1b 在开始使用ettercap之前 xff0c 先配置一下 xff1a 编辑配置文件 etc ettercap
  • Notion AI是什么?和chatgpt比哪个好?

    最近对于人工智能的热度可谓是前所未有的高涨 xff0c 毕竟现在的人工智能发展是越来越快 xff0c 能做的事情也是越来越多 xff0c 不再是那种低等的假智能小爱同学和siri那种 今天我们主要来聊聊Notion AI和chatgpt吧
  • 缺失msvcrtd.dll怎么办?如何修复msvcrtd.dll文件

    在日常使用电脑中 xff0c 其实出现一些dll文件缺失是非常的正常的 xff0c 这时候我们不需要慌张 xff0c 只需要知道一些解决方法 xff0c 那么就可以解决文件缺失问题 xff0c 今天来给大家详细的讲解一下缺失msvcrtd
  • 电脑丢失msvcp140.dll的解决方法分享

    如果你在使用电脑时遇到了 找不到msvcp140 dll 的错误提示 xff0c 别着急 xff01 这并不是什么严重的问题 xff0c 电脑丢失msvcp140 dll的解决方法分享 xff0c 只要你按照以下方法进行处理 xff0c 很
  • 人工智能机器人-智能时代的新纪元

    现代科学技术的飞速发展不仅让生产生活变得更加便捷 xff0c 同时也为人们带来了各种人工智能机器人 通过不断优化和升级 xff0c 现今人工智能机器人已经成为人们生活中不可或缺的一部分 本文将介绍多个人工智能机器人 xff0c 其中一项是C
  • binkw32dll缺失怎么办?如何解决binkw32dll修复问题

    binkw32dll缺失怎么办 xff1f 在使用某些计算机游戏或应用程序时 xff0c 您可能遇到过binkw32dll缺失的问题 这意味着您的计算机无法找到该DLL文件 xff0c 从而无法正常运行程序 在本文中 xff0c 我们将探讨
  • AI作画生成器,AI作画的优缺点

    AI作画生成器 xff0c AI作画生成是一种基于人工智能技术的艺术创作方式 xff0c 其在过去几年中得到了广泛应用和迅速发展 本文将以此为题 xff0c 从几个方面来探讨AI作画生成 一 什么是AI作画生成 AI作画生成 xff0c 顾
  • midjourney入口是什么?怎么使用midjourney

    最近有很多小伙伴在咨询我midjourney的事情 xff0c 因为他们看过midjourney的神奇能力 xff0c 忍不住想玩一下 xff0c 都在问midjourney要去哪里玩 xff1f midjourney入口是什么 xff1f

随机推荐