Windows下使用cmake vscode搭建 C/C++开发调试环境

在windows下搭建的方式,在第3章之后同样适用于Linux系统,大致步骤均相同

文章目录

  • 1. MinGW的下载与安装
    • 1.1 下载地址
    • 1.2 下载流程
    • 1.3 检验是否配置成功
  • 2. cmake的下载与安装
    • 2.1 下载地址
    • 2.2 下载流程
    • 2.3 检验是否配置成功
    • 2.4 cmake的常用指令
  • 3. VScode插件
  • 4. 使用camke编译一个简单工程
    • 4.1 代码结构
    • 4.2 代码示例
    • 4.3 在根目录下新建一个CMakeLists.txt文件
    • 4.4 vscode中配置cmake
  • 5. 调试
    • 5.1 在main.cpp 第7行添加断点
    • 5.2 启动调试
      • 5.2.1 点击左下角符号
      • 5.2.2 当文件内容修改时,就必须先点击左下方 build ,另一种调试方式,可以自动为我们处理

1. MinGW的下载与安装

MinGW提供了 C/C++编译器,可以将程序源代码编译为可以在 Windows 中运行的可执行程序

1.1 下载地址

https://sourceforge.net/projects/mingw-w64/
Windows下使用cmake vscode搭建 C/C++开发调试环境_第1张图片

1.2 下载流程

Windows下使用cmake vscode搭建 C/C++开发调试环境_第2张图片
不推荐Online Installer , sjij版本较稳定
Windows下使用cmake vscode搭建 C/C++开发调试环境_第3张图片
点击下载后跳转页面读秒,读秒后开始下载
Windows下使用cmake vscode搭建 C/C++开发调试环境_第4张图片
Windows下使用cmake vscode搭建 C/C++开发调试环境_第5张图片
安装完成后将其解压到指定目录,并且将该文件夹中的 bin目录添加进系统的环境变量
将文件夹设置为环境变量方法
Windows下使用cmake vscode搭建 C/C++开发调试环境_第6张图片

1.3 检验是否配置成功

  • win + r,打开cmd命令窗口
  • 输入 gcc --version
    在这里插入图片描述
  • 输入 g++ --version
    Windows下使用cmake vscode搭建 C/C++开发调试环境_第7张图片

2. cmake的下载与安装

2.1 下载地址

https://cmake.org/download/

2.2 下载流程

页面下滑,如图所示(推荐下载压缩包)
Windows下使用cmake vscode搭建 C/C++开发调试环境_第8张图片
将下载下来的压缩包解压到自定义路径,并且将该文件夹下的bin目录添加进系统环境变量
将文件夹设置为环境变量方法
在这里插入图片描述

2.3 检验是否配置成功

  • win + r,打开cmd命令窗口
  • 输入 cmake --version (我装的是3.23版本)
    Windows下使用cmake vscode搭建 C/C++开发调试环境_第9张图片

2.4 cmake的常用指令

  • cmake_minimum_required - 指定使用的CMake版本不低于xxx
# CMake版本不低于 3.10
cmake_minimum_required(VERSION 3.10)
  • project - 定义工程名称,并可指定工程支持的语言
# 指定工程名为 TEST,指定支持的语言为C++(指定支持语言可省略,表示支持所有语言)
project(TEST C++)
  • set - 显式的定义变量
# 定义SRC变量,其值为main.cpp hello.cpp,相当于使用SRC来替换main.cpp hello.cpp
set(SRC main.cpp hello.cpp)
  • include_directories - 向工程添加多个特定的头文件搜索路径,相当于指定g++编译器的-I参数
# 将inc添加到头文件搜索路径
include_directories(inc)
  • add_compile_options - 添加编译参数
# 添加编译参数 -Wall(输出警告信息) -std=c++11(支持C++11标准) -O2(优化级别)
add_compile_options(-Wall -std=c++11 -O2)
  • add_subdirectory - 向当前工程添加存放源文件的子目录,并可以指定中间二进制和目标二进制
    存放的位置
# 添加src子目录,src中需有一个CMakeLists.txt
add_subdirectory(src)
  • aux_source_directory - 发现一个目录下所有的源代码文件并将列表存储在一个变量中,这个指
    令临时被用来自动构建源文件列表存放的位置
# 定义SRC变量,其值为当前目录下所有的源代码文件
aux_source_directory(. SRC)
# 编译SRC变量所代表的源代码文件,生成main可执行文件
add_executable(main ${SRC})
  • add_executable - 生成可执行文件
# 编译main.cpp生成可执行文件main
add_executable(main main.cpp)
  • CMAKE_BUILD_TYPE 编译类型(Debug, Release)
# 设定编译类型为debug,调试时需要选择debug(相当于带调试信息)
set(CMAKE_BUILD_TYPE Debug)
# 设定编译类型为release,发布时需要选择release
set(CMAKE_BUILD_TYPE Release)

3. VScode插件

Windows下使用cmake vscode搭建 C/C++开发调试环境_第10张图片

4. 使用camke编译一个简单工程

4.1 代码结构

Windows下使用cmake vscode搭建 C/C++开发调试环境_第11张图片

4.2 代码示例

swap.h

#ifndef SWAP_H
#define SWAP_H

#include 

class SWAP {
public:
    SWAP(int a, int b);
    void swap();
    void print();
    ~SWAP();
private:
    int a;
    int b;
};

#endif

swap.cpp

#include "swap.h"

SWAP::SWAP(int a, int b)
{
    this->a = a;
    this->b = b;
}

SWAP::~SWAP() {};

void SWAP::swap()
{
    int c = this->a;
    this->a = this->b;
    this->b = c;
}

void SWAP::print()
{
    std::cout<< "a = " << this->a <<std::endl;
    std::cout<< "b = " << this->b <<std::endl;
}

main.cpp

#include "swap.h"

int main()
{
    SWAP tmp(3,5);
    tmp.print();
    tmp.swap();
    std::cout<< "After exchange:" <<std::endl;
    tmp.print();
    return 0;
}

4.3 在根目录下新建一个CMakeLists.txt文件

Windows下使用cmake vscode搭建 C/C++开发调试环境_第12张图片
CMakeLists.txt

#cmake版本不低于 3.10
cmake_minimum_required(VERSION 3.10)
#工程名为 SWAP
project(SWAP)
#定义SRC变量
set(SRC main.cpp src/swap.cpp)
#设定编译类型为debug,生成的可执行文件可编译
set(CMAKE_BUILD_TYPE Debug)
#指定 inc 为头文件搜索路径
include_directories(inc)
#生成可执行文件main
add_executable(main ${SRC})

4.4 vscode中配置cmake

  • 先查看左下方状态栏是否显示cmake状态
    Windows下使用cmake vscode搭建 C/C++开发调试环境_第13张图片

  • 如果左下方不显示可以在拓展管理中,先禁用再启用,之后就可以显示
    Windows下使用cmake vscode搭建 C/C++开发调试环境_第14张图片

  • 选择Debug,包含调试信息,方便后期调试
    Windows下使用cmake vscode搭建 C/C++开发调试环境_第15张图片

  • 选择搜索到的编译器
    Windows下使用cmake vscode搭建 C/C++开发调试环境_第16张图片

  • 点击左下方 build
    Windows下使用cmake vscode搭建 C/C++开发调试环境_第17张图片

  • 点击 三角符号,运行可执行文件
    Windows下使用cmake vscode搭建 C/C++开发调试环境_第18张图片

5. 调试

5.1 在main.cpp 第7行添加断点

可鼠标单击行号前空白或使用快捷键 F9
Windows下使用cmake vscode搭建 C/C++开发调试环境_第19张图片

5.2 启动调试

5.2.1 点击左下角符号

在这里插入图片描述
Windows下使用cmake vscode搭建 C/C++开发调试环境_第20张图片

5.2.2 当文件内容修改时,就必须先点击左下方 build ,另一种调试方式,可以自动为我们处理

  • 创建 launch.json
    Windows下使用cmake vscode搭建 C/C++开发调试环境_第21张图片
    Windows下使用cmake vscode搭建 C/C++开发调试环境_第22张图片
  • 配置 launch.json
    在program后配置好正确的生成的可执行路径及名称,${fileDirname} 代表当前目录下
    preLaunchTask 表示调试会话开始前要运行的任务 CMake: build
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            //可执行文件路径
            "program": "${workspaceFolder}/build/main.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description":  "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            //调试会话开始前要运行的任务
            "preLaunchTask": "CMake: build",
        }
    ]
}
  • 创建并且配置 tasks.json-
    Windows下使用cmake vscode搭建 C/C++开发调试环境_第23张图片
    Windows下使用cmake vscode搭建 C/C++开发调试环境_第24张图片
    Windows下使用cmake vscode搭建 C/C++开发调试环境_第25张图片
    添加一行依赖
    Windows下使用cmake vscode搭建 C/C++开发调试环境_第26张图片
  • 配置完成后开始调试
    Windows下使用cmake vscode搭建 C/C++开发调试环境_第27张图片
  • 新增一行打印,直接调试,通过输出发现已重新生成可执行文件
    Windows下使用cmake vscode搭建 C/C++开发调试环境_第28张图片

你可能感兴趣的:(工具,windows,c++,vscode,linux)