在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-
添加一行依赖
配置完成后开始调试
新增一行打印,直接调试,通过输出发现已重新生成可执行文件