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

2.8 C/C++开发环境:VSCode+CMake+VS2017

使用VSCode中的CMake插件,配置VS编译器并生成构建系统。

一、软件安装

1.1 软件下载

VS和VSCode下载:Visual Studio 2022 + Visual Studio Code

CMake下载:cmake-4.0.2-windows-x86_64.msi

1.2 安装

(1)cmake安装

默认是勾选将cmake路径添加到环境变量中的,如果没有则要手动添加到PATH环境变量下。

(2)VS安装

注意:选好要下载的部分:

  • 使用C++的桌面开发
  • Visual Studio扩展开发

(3)vscode和cmake插件安装

二、配置使用

2.1 准备文件

创建如下的目录和文件:

# tree TestDemon/
TestDemon/
├── CMakeLists.txt    # cmake配置文件
└── hello.c           # 源码

CMakeLists.txt文件内容如下:

cmake_minimum_required(VERSION 3.10)
project(hello VERSION 1.0)set(CXX_STANDARD 11)
set(CXX_STANDARD_REQUIRED True)add_executable(hello hello.c)

hello.c文件内容如下:

#include <stdio.h>
int main()
{printf("hello ffmpeg \r\n");return 0;
}

2.2 配置VS编译器 并生成构建系统

选择VS编译器:
在这里插入图片描述
在这里插入图片描述
这个操作背后 是执行的cmake命令生成构建系统:

cmake -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE --no-warn-unused-cli -S./ -B./build -G "Visual Studio 16 2019" -T host=x64 -A x64
  • -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE 启用生成compile_commands.json文件,这个文件被许多代码分析工具(如clangd)使用:BOOL=TRUE显式指定这是一个布尔值并设为TRUE
  • --no-warn-unused-cli 禁止显示未使用的命令行参数的警告,当你在命令行传递一些CMakeLists.txt中没有使用变量时不会警告
  • -S./ 指定源目录(项目根目录,即包含CMakeLists.txt的地方)./ 表示当前目录
  • -B./build 指定构建目录(生成构建系统文件将放在这里)
  • -G "Visual Studio 15 2017" 指定生成器(Generator)
    • Visual Studio 15 2017 是vs2017的CMake标识符
    • Visual Studio 16 2019
    • Visual Studio 17 2022
  • -T host=x64 指定工具集(Toolset)表示使用64位版本构建工具
  • -A x64 指定平台(Architecture) x64 表示生成64位目标平台

2.3 编译

# 使用原来生成的配置
cd build
cmake --build . --config Debug
cmake --build . --config Release# 重新生成配置(要先删除build目录)
mkdir build && cd build
cmake ..  # 生成配置
cmake --build . --config Debug
cmake --build . --config Release
http://www.xdnf.cn/news/13208.html

相关文章:

  • 有关文心一言禁止浏览器开启调式工具的问题帖子汇总
  • uniapp实现的具备丝滑动画的标签工具栏模板
  • Linux中shell流程控制语句
  • 【为什么RabbitMQ能够控制事务?控制事务的原理】
  • DAY 49 CBAM注意力
  • C++ 类基础:封装、继承、多态与多线程模板实现
  • Python开发基础手语识别(基础框架版)
  • Ansible 错误处理:确保高效自动化
  • 【工具】Configurable-HTTP-Proxy 使用指南
  • 倒装芯片凸点成型工艺
  • TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
  • 相关类相关的可视化图像总结
  • Polarr:手机修图,专业与创意并存
  • 数据库管理与高可用-MySQL故障排查与生产环境优化
  • 一种新的编程语言,这种新编程语言叫做『人类语言』
  • 基于大模型预测原发性急性闭角型青光眼的技术方案研究大纲
  • Django RBAC项目后端实战 - 03 DRF权限控制实现
  • 无菌药厂通信架构升级:MODBUS TCP转CANopen技术的精准控制应用
  • 云原生时代的系统设计:架构转型的战略支点
  • Electron简介(附电子书学习资料)
  • 什么是日内融?日内融交易系统开发全解析
  • 第三方检测:软件渗透测试
  • 视觉slam--框架
  • 如何将联系人从 iPhone 转移到 Android
  • linux中如何在日志里面检索nowStage不等于1的数据的指令
  • 视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
  • Java解析前端传来的Unix时间戳
  • Vue 自动导入函数和变量插件 unplugin-auto-import
  • MySQL故障排查、生产环境优化与存储引擎MyISAM和InnoDB
  • 什么是TRS收益互换?金融创新架构下的交易系统开发与实践