windows--cmake与c++的使用教程(8)

1 概述

本节目标:基于VSCode, 使用CMake Tools插件命令调试程序

  • 通过前面可以得知,CMake Tools的其他常用命令已经介绍过了,下面介绍 CMake:debug命令

2 准备工作

2.1 目录结构

  • 创建一个名为main.cc的文件,位于src文件夹下,而src文件夹与CMakeLists.txt处于同级目录。
.
│  CMakeLists.txt
│  
└─src
        main.cc

使用VSCode打开CMakeLists.txt所在文件夹。方法:VScode > File > Open Folder... 或者 使用资源管理器切换到CMakeLists.txt所在目录,鼠标右键选择 通过VSCode打开。

2.2 源码文件

  • 下面将准备一份 C++ 代码,写入 main.cc 文件中,代码用于输出 hello cmake,源码如下:
#include <iostream>

/// 程序入口
int main(int argc, char* argv[], char* env[])
{
	const std::string str_hello{"hello cmake"};
	std::cout << "\n" << str_hello.c_str() << "\n";
	
	return 0;
}

2.3 CMake脚本文件

  • 因为演示的是可执行程序,所以使用的是add_executable
  • 打开CMakeLists.txt文件,编写如下脚本
# 指定CMake脚本解析的最低版本,
cmake_minimum_required(VERSION 3.18)

# 指定项目
project(HelloCMake)

# 指创建src_files变量,用于管理代码文件时使用
set( src_files 
    ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cc
)

# 用于生成可执行程序, 第一个参数是项目名称, 第二个参数是项目文件
add_executable(${PROJECT_NAME} ${src_files})

2.3.1 PROJECT_NAME

  • PROJECT_NAME这是CMake内置的变量,对应的值就是project中的值,这里也就是 HelloCMake

2.3.2 src_files

  • src_files为自定义变量,如果需要使用变量,则需要使用{}将其包裹。

准备工作结束

3 使用CMake:Debug调试程序

  • 顺序:选择构建套件 > 选择配置管理(Debug | Release) > 构建脚本 > 编译源码 > 调试程序
  • VSCode打开命令面板快捷键:ctrl+shift+p
  • CMake Tools的命令基于命令面板

3.1 选择构建套件

  • 如果为首次执行cmake脚本,选择构建套件是必须的。
  • 后期增量开发,可不用再次选择。
  • 命令如下:
>CMake:Select a kit
  • 也可通过状态栏切换,手动切换

3.2 选择配置管理

  • 命令如下:
CMake: Select a variant
  • 也可通过状态栏切换

  • 因为本节演示的为调试,所以选择为Debug

  • 如果时发布软件,请选择 release

3.3 构建脚本

  • 命令如下:
>CMake:Configure

3.5 编译源码

命令如下:

CMake:build
  • 查看输出,如果输出没有语法错误,编译通过,则可调试, 笔者演示代码编译结果

可见,编译通过, 生成目标可执行文件 HelloCMake.exe

  • 也可通过状态点击编译

3.6 调试程序

  • 调试前,咱们先下断点, 回到main.cc文件第6行下断点,下断点方法和Vs2019下断点方法一致,鼠标左键点击行号前即可。

3.6.1 设置启动项目

  • 命令如下
CMake: Set a build Target
  • 选择: HelloCMake
  • 亦可通过UI选择

3.6.2 调试

  • 命令如下:
cmake:Debug

启动调试快捷键为: ctrl+F5

  • 默认调试快捷键与VS系列IDE的快捷键一致

3.7 调试中断

  • 可见程序已经在断点处暂停

3.8 程序结果

  • F5 继续运行程序,查看已经输出hello cmake了。

至此,已经可以使用VSCode + CMake编写代码、与调试了。

5 题外话

  • 如果较为熟悉使用VS IDE编码与调试,也可打开输出目录Build下的HelloCMake.sln解决方案,执行编码与调试。
posted @ 2022-11-16 20:06  mohist  阅读(442)  评论(0编辑  收藏  举报