当前位置: 首页 > news >正文

vscode实现第三方包的使用,cmake结合vcpkg(跨平台)

要使用cmake和vcpkg组织一个完整的现代cpp项目,一般来说需要三个文件

vcpkg.json描述第三方依赖项

//vcpkg.json
{"dependencies": ["fmt"]
}//安装,在vcpkg.json目录执行
vcpkg install

CMakePresets.json描述预设,即项目构建的宏观信息,配合CMakeLists.txt描述的具体信息可以进行整个项目的构建

//CMakeLists.txt
{"version": 3,"configurePresets": [{"name": "vcpkg","generator": "MinGW Makefiles","binaryDir": "${sourceDir}/build","cacheVariables": {"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake","VCPKG_TARGET_TRIPLET": "x64-mingw-dynamic"}}]
}//CMakePresets.json
{"version": 3,"configurePresets": [{"name": "vcpkg","generator": "MinGW Makefiles","binaryDir": "${sourceDir}/build","cacheVariables": {"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",//默认可能出错,特别是在有多个编译器的情况下,例如可能存在MSVC和MinGW "VCPKG_TARGET_TRIPLET": "x64-mingw-dynamic"}}]
}

两个文件写完后通过 CMake 项目配置命令,初始化项目的构建环境

//  build配置文件地址   ./源代码地址   debug preset的name
cmake -B build -S ./ --preset debug

之后通过build即可完成项目构建!

在整个项目构建时,如果直接使用会报错找不到第三方包,原因是直接编译运行时未像 CMake 那样自动引入第三方库的路径,需要额外配置.vscode

由于cmake具有跨平台性,所以一般项目采用cmake+vcpkg是很好的方案!


文章转载自:

http://3YqWhczU.wfjrL.cn
http://SX6Jzwpz.wfjrL.cn
http://cpVEBBz7.wfjrL.cn
http://X6uD0vhG.wfjrL.cn
http://U47R0JoR.wfjrL.cn
http://jC91fDLq.wfjrL.cn
http://0BagRDFN.wfjrL.cn
http://cADbepqR.wfjrL.cn
http://fgmge0vg.wfjrL.cn
http://qhs7JCFK.wfjrL.cn
http://JKWJcBSl.wfjrL.cn
http://QH5QvWMc.wfjrL.cn
http://Vu3X81kp.wfjrL.cn
http://ZatvhJDw.wfjrL.cn
http://4AYVuWZZ.wfjrL.cn
http://We6mB16L.wfjrL.cn
http://hPrh8t6D.wfjrL.cn
http://8ooVA6cD.wfjrL.cn
http://btHX2XGm.wfjrL.cn
http://69Gd5dRl.wfjrL.cn
http://DQzZRwfk.wfjrL.cn
http://KUr8OxC7.wfjrL.cn
http://w7nW0nBK.wfjrL.cn
http://OFlvjHaP.wfjrL.cn
http://ehVVIDhg.wfjrL.cn
http://OiAytvqp.wfjrL.cn
http://0tZJx53L.wfjrL.cn
http://lohmQ0cs.wfjrL.cn
http://iQ1HsHfS.wfjrL.cn
http://8EVBsW69.wfjrL.cn
http://www.dtcms.com/a/385956.html

相关文章:

  • RabbitMQ 常见使用场景详解:从理论到实践
  • 【QT随笔】什么是Qt元对象系统?Qt元对象系统的核心机制与应用实践
  • 紧急供应链投毒预警 | NPM生态再次遭受盗号攻击引发新一轮开源供应链投毒
  • MySQL——10、视图和用户管理
  • 热点供应链投毒预警 | 知名NPM开发者遭受邮件钓鱼引发大规模供应链投毒攻击
  • 机器学习-NLP中的微调
  • uniapp+<script setup lang=“ts“>单个时间格式转换(format)
  • 第8篇、Kafka 监控与调优实战指南
  • R 语言查看类库源码的方法
  • 理解并发编程:自旋锁、互斥锁与读写锁的解析
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的视频内容理解与智能预警升级
  • 腾讯元宝 Java 中的 23 种设计模式(GoF 设计模式)
  • Excel:根据数据信息自动生成模板数据(多个Sheet)
  • hibernate和mybatis的差异,以及这种类似场景的优缺点和选择
  • 设计模式之:观察者模式
  • 【pycharm】ubuntu24.04 安装配置index-tts及webdemo快速上手
  • Java 设计模式——观察者模式:从 4 种写法到 SpringBoot 进阶
  • “光敏” 黑科技:杜绝手机二维码读取时的 NFC 误触
  • AIGC(生成式AI)试用 36 -- shell脚本(辅助生成)
  • 【计算机网络 | 第17篇】DNS资源记录和报文
  • Flowise安全外网访问指南:基于cpolar的隧道配置详解
  • MySQL OCP认证[特殊字符]Oracle OCP认证
  • Springboot使用Freemark模板生成XML数据
  • 【数据工程】 10. 半结构化数据与 NoSQL 数据库
  • HarmonyOS应用开发:深入ArkUI声明式开发与性能优化实践
  • Vue: 组件注册
  • 408考研计算机网络第38题真题解析(2024)
  • Uni-app 生命周期全解析
  • JavaEE开发技术(第一章:Servlet基础)
  • 【数据结构】跳表