Windows下搭建cpp开发环境
1. 下载安装mingw-w64编译器和cmake
将下载好的文件分别添加到环境变量中
分别输入下列命令查看环境变量是否配置成功
gcc --version
g++ --version
cmake --version
2. VSCode安装插件
安装下面几款插件
3. 使用VSCode开发cpp程序
3.1 编写单个可执行的cpp程序
VSCode是以文件夹为项目单位,例如在demo文件夹下创建一个 main.cpp
程序文件,程序代码如下:
#include <iostream>
using namespace std;
int main() {
for (int i = 0; i < 5; ++i) {
cout << "hello world" << endl;
}
return 0;
}
使用 g++
命令编译 mian.cpp
, g++ main.cpp -o main
,会在 demo 目录下生成一个名为 mian.exe
的可执行文件;
运行 mian.exe 可执行文件;
每次输入命令来编译然后运行程序的方法比较繁琐,也可以如下图所示操作;
生成的 tasks.json 文件内容如下,对该配置文件中的一些字段简单的介绍;
tasks.json 文件中的内容是用来构建程序时进行一系列的操作的描述;
command
是运行 cpp 程序文件的命令;
args
是一个数组形式,指定将传递给 g++ 的命令行参数,这些参数必须按照编译器期望的顺序指定,即数组中参数出现的顺序;其中 ${file}
表示当前打开的文件; ****${fileBasename}
表示当前打开的文件名;${fileBasenameNoExtension}
表示当前打开文件的不带后缀的文件名;${fileDirname}
表示当前打开文件的目录名;
当点击运行按钮时,将读取tasks.json
以了解如何构建和运行你的程序;
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成活动文件",
"command": "D:\\Application\\mingw64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
3.2 调试单个程序
g++ main.cpp -o main
命令生成的是一个可执行文件,不能进行调试;命令 g++ -g mian.cpp -o main_debug
可以生成具有调试信息的可执行文件,即可以进行调试,选项 -g 表示具有调试功能;通过查看文件大小可以知道带有调试信息的文件大小更大。
借助VSCode进行程序调试
选择一个断点,然后如下图所示:
3.3 多文件编译执行
多个文件如图所示:
swap.h
#ifndef SWAP_H
#define SWAP_H
void swap(int &a, int &b);
#endif
swap.cpp
#include "swap.h"
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
main.cpp
#include <iostream>
#include "swap.h"
using namespace std;
int main() {
int a = 10, b = 20;
cout << "before swap: a = " << a << ", b = " << b << endl;
swap(a, b);
cout << "after swap: a = " << a << ", b = " << b << endl;
return 0;
}
使用g++ 命令编译多文件,g++ main.cpp swap.cpp -o main
当程序文件的数量变多时,使用命令行编译文件将会变得非常低效,接下来介绍使用cmake进行多文件的编译运行和调试;
3.4 使用cmake进行多文件的编译运行
-
首先在项目的根目录下创建一个名为
CMakeLists.txt
的文件,然后在 CmakeLists.txt 文件中输入下面内容,构建一个简单 CMake 工程;cmake_minimum_required(VERSION 3.17) # cmake项目要求的cmake的最低版本 project(demo02) # 项目名为 demo02 set(CMAKE_CXX_STANDARD 17) # c++标准 add_executable(main main.cpp swap.h swap.cpp) # 编译链接的文件名,第一个为最终生成的可执行文件名(不带后缀),后面为待编译链接的文件名,用空格隔开;
-
在VSCode中配置Cmake项目
上述构建cmake项目,并通过cmake编译链接cpp程序文件的方法是通过命令行的方式进行的,这样是比较繁琐的,也没能充分利用VSCode插件的便利性。我们肯定是希望只需要在CMakeLists.txt文件中进行简单的修改,然后通过VSCode点击几个简单的按钮就能重新编译链接程序,因此接下来进行相关配置。 -
配置 tasks.json 文件
tasks.json
文件可以配置为运行脚本和启动进程,以便可以在 VS Code 中使用其中许多现有工具,而无需输入命令行或编写新代码。options
覆盖cwd
(当前工作目录)、env
(环境变量)或shell
(默认 shell)的默认值。选项可以按任务设置,也可以全局或按平台设置。cwd
表示启动VSCode时任务运行器的当前工作目录;tasks
表示命令行执行的任务,可以是多个任务的组合;label
用户定义任务的标签,根据标签值确定执行哪个任务;dependsOn
将更简单的任务组合成任务。{ "options": { "cwd": "${workspaceFolder}/build" }, "tasks": [ { "type":"shell", "label": "cmake", "command": "cmake", "args": [ ".." ] }, { "label": "make", "group": { "kind": "build", "isDefault": true }, "command": "mingw32-make.exe", "args": [ ] }, { "label": "Build", "dependsOn":[ "cmake", "make" ] } ], "version": "2.0.0" }
-
配置 launch.json 文件
launch.json
配置文件,顾名思义,启动程序时读取的配置文件;program
指定要调试的程序;args
运行调试程序时传递给程序的参数数组;miDebuggerPath
运行调试程序的命令;preLaunchTask
顾名思义,在执行launch.json文件中的命令时先执行的 task,即 tasks.json 文件中配置的 task,这里为 tasks.json 中 label 值为 Build 的 task。而 label 值为 Build 的 task 又是 label 为 cmake 和 make 的组合 task,即在执行 launch.json 中命令之前,先执行 cmake 和 make 命令。{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "C/C++: g++.exe build and debug active file", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/main.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "D:\\Application\\mingw64\\bin\\gdb.exe", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "Build" } ] }
-
在完成上述的配置后,即可使用快捷 ctrl+F5 编译运行程序,或快捷键 F5 调试程序;