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

Windows/Linux下vscode+vcpkg管理C++包链接方法

1. 安装和设置 vcpkg

Windows:

git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
.\bootstrap-vcpkg.bat
.\vcpkg integrate install

Linux:

git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install

2. VSCode 扩展安装

安装必要的扩展:

  • C/C++ Extension Pack
  • CMake Tools(如果使用 CMake)

3. 配置方式

方式一:使用 CMake(推荐)

创建 CMakeLists.txt:

cmake_minimum_required(VERSION 3.20)
project(MyProject)set(CMAKE_CXX_STANDARD 17)# 查找包
find_package(fmt CONFIG REQUIRED)
find_package(nlohmann_json CONFIG REQUIRED)add_executable(main main.cpp)# 链接库
target_link_libraries(main PRIVATE fmt::fmt nlohmann_json::nlohmann_json)

配置 CMakePresets.json:

{"version": 3,"configurePresets": [{"name": "default","toolchainFile": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"}]
}

方式二:配置 c_cpp_properties.json

.vscode/c_cpp_properties.json 中配置:

Windows:

{"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}/**","C:/vcpkg/installed/x64-windows/include"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"windowsSdkVersion": "10.0.19041.0","compilerPath": "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.30.30705/bin/Hostx64/x64/cl.exe","cStandard": "c17","cppStandard": "c++17","intelliSenseMode": "windows-msvc-x64"}],"version": 4
}

Linux:

{"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**","/path/to/vcpkg/installed/x64-linux/include"],"defines": [],"compilerPath": "/usr/bin/gcc","cStandard": "c17","cppStandard": "c++17","intelliSenseMode": "linux-gcc-x64"}],"version": 4
}

4. 配置编译任务

创建 .vscode/tasks.json

Windows:

{"version": "2.0.0","tasks": [{"type": "shell","label": "C/C++: cl.exe build active file","command": "cl.exe","args": ["/Zi","/EHsc","/Fe:","${fileDirname}\\${fileBasenameNoExtension}.exe","${file}","/I", "C:\\vcpkg\\installed\\x64-windows\\include","/link","/LIBPATH:C:\\vcpkg\\installed\\x64-windows\\lib"],"group": {"kind": "build","isDefault": true}}]
}

Linux:

{"version": "2.0.0","tasks": [{"type": "shell","label": "C/C++: g++ build active file","command": "/usr/bin/g++","args": ["-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}","-I/path/to/vcpkg/installed/x64-linux/include","-L/path/to/vcpkg/installed/x64-linux/lib","-lfmt"  // 根据需要添加具体库],"group": {"kind": "build","isDefault": true}}]
}

5. 环境变量设置

设置 VCPKG_ROOT 环境变量:

  • Windows: set VCPKG_ROOT=[your vcpkg installed path]
  • Linux: export VCPKG_ROOT=[your vcpkg installed path]

6. 使用示例

安装包:

vcpkg install fmt nlohmann-json

示例代码 main.cpp:

#include <fmt/core.h>
#include <nlohmann/json.hpp>int main() {fmt::print("Hello vcpkg!\n");nlohmann::json j;j["name"] = "vcpkg";j["version"] = "2024";fmt::print("JSON: {}\n", j.dump());return 0;
}

最佳实践建议

  1. 使用 CMake - 最灵活且跨平台兼容性好
  2. 创建 vcpkg.json - 在项目根目录创建依赖文件:
    {"dependencies": ["fmt","nlohmann-json"]
    }
    
  3. 版本控制 - 将 vcpkg.json 加入版本控制,但排除 vcpkg_installed 目录
  4. 使用 manifest 模式 - 让 vcpkg 自动管理项目依赖

这样配置后,VSCode 就能正确识别和链接 vcpkg 管理的包了。


文章转载自:

http://aLnMazTM.qdcpn.cn
http://SDGyQFq8.qdcpn.cn
http://Lx6puj9S.qdcpn.cn
http://8aJTXlLV.qdcpn.cn
http://lZUOS0Kt.qdcpn.cn
http://FtJOi1Cj.qdcpn.cn
http://kC7USOsI.qdcpn.cn
http://alxVBTCt.qdcpn.cn
http://lehXJ4L1.qdcpn.cn
http://rxo2T2CR.qdcpn.cn
http://JS7ifgNf.qdcpn.cn
http://OE92aXmt.qdcpn.cn
http://jy9Tg7CK.qdcpn.cn
http://FFThBjuw.qdcpn.cn
http://qSZg4yVR.qdcpn.cn
http://TQz1Tr9A.qdcpn.cn
http://lorQnZMR.qdcpn.cn
http://Dt61crd9.qdcpn.cn
http://xCpQh4u3.qdcpn.cn
http://VMOG0Jy4.qdcpn.cn
http://kQYMxk2J.qdcpn.cn
http://n2V8yVYn.qdcpn.cn
http://cYr5Yixv.qdcpn.cn
http://4akEIH3P.qdcpn.cn
http://FNbLf2HF.qdcpn.cn
http://cI5g52bV.qdcpn.cn
http://2psJdHcC.qdcpn.cn
http://enjVHphN.qdcpn.cn
http://RW0i2H1U.qdcpn.cn
http://ZwI6N6JN.qdcpn.cn
http://www.dtcms.com/a/365383.html

相关文章:

  • 相关性分析与常用相关系数
  • React学习教程,从入门到精通, React 组件语法知识点(9)
  • 记一次VMware虚拟机(BC-linux)网络配置过程
  • LVGL9.3 vscode 模拟环境搭建
  • 【医疗行业案例】基于 React 的预约系统:DHTMLX 助力高效排班与预约管理
  • kafka Partition(分区)详解
  • 线性代数基础 | 基底 / 矩阵 / 行列式 / 秩 / 线性方程组
  • UniApp 混合开发:Plus API 从基础到7大核心场景实战的完整指南
  • 老年综合实训室建设方案:产教融合新实践助力养老人才供需精准对接
  • pytorch初级
  • 【FPGA】DDS信号发生器
  • leetcode210.课程表II
  • 蓝光三维扫描技术赋能内衣胸垫设计:从精准制造到个性化体验的革新之旅
  • 【OC】属性关键字
  • 3027. 人员站位的方案数 II
  • 前端自动化打包服务器无法安装高版本 Node.js v22 问题解决
  • 高效文本处理:cut、sort、uniq 和 tr 命令详解与实战
  • 巨头撤退,玩家内卷!2025,IoT平台的生死劫与重生路
  • raspberry Pi 4B(树莓派4B)开启VNC服务 主机用VNC连接
  • Radiant Photo 2.1.0.756 +扩展插件 图像AI增强修饰
  • 时间感知认知诊断模型:原理与实施步骤
  • Vite 环境变量与全局变量详解
  • Java 技术支撑 AI 系统落地:从模型部署到安全合规的企业级解决方案(三)
  • 什么是好的系统设计
  • 虚拟机详细图文教程系列14、Linux虚拟机Centos8系统下载安装Python-Pycharm
  • 【QT随笔】巧用事件过滤器(installEventFilter 和 eventFilter 的组合)之 QComboBox 应用
  • 标准化与定制化的平衡艺术:制造企业如何通过灵活配置释放系统价值
  • 嵌入式第四十五天(51单片机相关)
  • TDD测试驱动开发+Python案例解析
  • SkyWalking 支持的告警通知方式(Alarm Hooks)类型