1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Windows下使用cmake vscode搭建 C/C++开发调试环境

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

时间:2021-10-10 19:19:38

相关推荐

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

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

1. MinGW的下载与安装

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

1.1 下载地址

/projects/mingw-w64/

1.2 下载流程

不推荐Online Installer , sjij版本较稳定

点击下载后跳转页面读秒,读秒后开始下载

安装完成后将其解压到指定目录,并且将该文件夹中的 bin目录添加进系统的环境变量

将文件夹设置为环境变量方法

1.3 检验是否配置成功

win + r,打开cmd命令窗口输入 gcc --version

输入 g++ --version

2. cmake的下载与安装

2.1 下载地址

/download/

2.2 下载流程

页面下滑,如图所示(推荐下载压缩包)

将下载下来的压缩包解压到自定义路径,并且将该文件夹下的bin目录添加进系统环境变量

将文件夹设置为环境变量方法

2.3 检验是否配置成功

win + r,打开cmd命令窗口输入 cmake --version (我装的是3.23版本)

2.4 cmake的常用指令

cmake_minimum_required - 指定使用的CMake版本不低于xxx

# CMake版本不低于 3.10cmake_minimum_required(VERSION 3.10)

project - 定义工程名称,并可指定工程支持的语言

# 指定工程名为 TEST,指定支持的语言为C++(指定支持语言可省略,表示支持所有语言)project(TEST C++)

set - 显式的定义变量

# 定义SRC变量,其值为main.cpp hello.cpp,相当于使用SRC来替换main.cpp hello.cppset(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.txtadd_subdirectory(src)

aux_source_directory - 发现一个目录下所有的源代码文件并将列表存储在一个变量中,这个指

令临时被用来自动构建源文件列表存放的位置

# 定义SRC变量,其值为当前目录下所有的源代码文件aux_source_directory(. SRC)# 编译SRC变量所代表的源代码文件,生成main可执行文件add_executable(main ${SRC})

add_executable - 生成可执行文件

# 编译main.cpp生成可执行文件mainadd_executable(main main.cpp)

CMAKE_BUILD_TYPE 编译类型(Debug, Release)

# 设定编译类型为debug,调试时需要选择debug(相当于带调试信息)set(CMAKE_BUILD_TYPE Debug)# 设定编译类型为release,发布时需要选择releaseset(CMAKE_BUILD_TYPE Release)

3. VScode插件

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

4.1 代码结构

4.2 代码示例

swap.h

#ifndef SWAP_H#define SWAP_H#include <iostream>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文件

CMakeLists.txt

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

4.4 vscode中配置cmake

先查看左下方状态栏是否显示cmake状态

如果左下方不显示可以在拓展管理中,先禁用再启用,之后就可以显示

选择Debug,包含调试信息,方便后期调试

选择搜索到的编译器

点击左下方 build

点击 三角符号,运行可执行文件

5. 调试

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

可鼠标单击行号前空白或使用快捷键 F9

5.2 启动调试

5.2.1 点击左下角符号

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

创建 launch.json

配置 launch.json

在program后配置好正确的生成的可执行路径及名称,${fileDirname} 代表当前目录下

preLaunchTask 表示调试会话开始前要运行的任务 CMake: build

{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: /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-

添加一行依赖

配置完成后开始调试

新增一行打印,直接调试,通过输出发现已重新生成可执行文件

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。