您现在的位置是:首页 >学无止境 >VScode 中运行C++,并用g++命令、CMake、配置launch.josn和tasks.json来运行和调试可执行文件网站首页学无止境

VScode 中运行C++,并用g++命令、CMake、配置launch.josn和tasks.json来运行和调试可执行文件

love_wangwenjing3.0 2024-06-17 00:01:02
简介VScode 中运行C++,并用g++命令、CMake、配置launch.josn和tasks.json来运行和调试可执行文件

前期安装准备

安装VScode、cmake、mingw32 (具体版本如下)

VSCodeUserSetup-x64-1.78.0.exe

cmake-3.26.3-windows-x86_64.msi

x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z

将这几个的bin目录加入系统环境变量(右击此电脑,属性,高级,环境变量,Path,编辑,新建)

VScode扩展插件安装:

  1. C/C++ v1.8.4(此插件需要注意版本)
  2. Chinese(中文简化)(选择性安装,要熟悉一点英文)
  3. C/C++ Extension Pack v1.3.0
  4. C/C++ Project Generator v1.2.11
  5. C/C++ Themes v2.0.0
  6. CMake v0.0.17
  7. CMake Tools v.1.14.31
  8. Code Runnner v0.12.0
  9. Makefile Tools v0.7.0

新建一个项目和main.cpp

#include<iostream>
using namespace std;

void swap(int& a,int& b)
{
    int temp;
    temp=a;
    a=b;
    b=temp;
}

int main()
{
  int val1=18;
  int val2=20;
  cout<<"Before swap"<<endl;
  cout<<"val1="<<val1<<endl;
  cout<<"val2="<<val2<<endl;
  swap(val1,val2);
  cout<<"After swap"<<endl;
  cout<<"val1="<<val1<<endl;
  cout<<"val2="<<val2<<endl;
}

基于g++命令,编译单文件,生成带调试信息的可执行文件,并调试

g++ -g main.cpp -o my_single_swap

-g:代表生成可调试的.exe文件

-o:生成.exe文件名为my_single_swap.exe

更改项目分支,将swap函数单独拎出来

├── include

│ └── swap.h

├── swap.cpp

└── main.cpp

swap.cpp文件内容

#include "stdio.h"
void swap(int& a,int& b)
{
    int temp;
    temp=a;
    a=b;
    b=temp;
}

swap.h头文件里内容,声明交换函数

void swap(int& a,int& b);

main.cpp文件内容

#include<iostream>
#include "stdio.h"
using namespace std;
int main()
{
  int val1=18;
  int val2=20;
  cout<<"Before swap"<<endl;
  cout<<"val1="<<val1<<endl;
  cout<<"val2="<<val2<<endl;
  swap(val1,val2);
  cout<<"After swap"<<endl;
  cout<<"val1="<<val1<<endl;
  cout<<"val2="<<val2<<endl;
}

基于g++命令,编译多文件,生成带调试信息的可执行文件,并调试

g++ -g .main.cpp swap.cpp -o my_single_swap

可能会报错,没有swap.h库,通过-I包含include文件夹

g++ -g .main.cpp swap.cpp -I include -o my_single_swap

若项目构建方式不同,需要相应更改命令,比如swap.cpp,main.cpp放在src文件夹下

g++ -g .srcmain.cpp .srcswap.cpp -I include -o my_single_swap

输入命令行时学会用 tab自动补全功能,代码编写:ctrl+"/"注释,shift+alt+向上或向下箭头复制行代码,ctrl+shift+p:打开面板platte

基于Cmake(相当于将g++命令集成与CMakeLists.txt文本中)

构建CMakeLists.txt(注意大小写)

├──CMakeLists.txt

├── include

│ └── swap.h

├── swap.cpp

└── main.cpp

CMakeLists.txt里的内容:

project(Myswap) //项目名
include_directories(include)//包含库文件,针对找不到swap.h问题
add_executable(my_swap main.cpp swap.cpp)//基于main.cpp, swap.cpp生成my_swap.exe

通过Cmake生成可执行文件,进行多文件编译并调试

  1. 输入ctrl+shift+p,选择cmake:Configure,选择g++(选定编译器)

  2. 打开终端,new terminal,输入以下命令

mkdir build(新建文件夹)
cd ./build(切换至build文件夹)
cmake .. -G "Unix Makefiles"(Ubuntu环境下)
cmake .. -G "MinGw Makefiles"(Win环境下)
cmake ..(生成Makefile文件)
mingw32-make.exe(运行生成.exe文件)

输入命令后,分支结构为:

├──build

│ └── Makefile

│ └── my_swap.exe

│ └── .cmake

│ └── CMakeFiles

│ └── cmake_install.cmake

│ └── CMakeCache.txt

│ └── compile_commands.json

├── include

│ └── swap.h

├──CMakeLists.txt

├── swap.cpp

└── main.cpp

配置json

launch.json-- for debug

tasks.json – for build before debug

用g++或cmake生成可执行文件后,点击run,start debugging(F5),选择C++(GDB/LLDB),选择调试的环境g++.

此时会生成 .vscode文件夹

├── .vscode

│ └── launch.json

│ └── tasks.json

在这里插入图片描述

launch.json需要注意两个地方

-1- “program”:对应生成的.exe文件

-2- “preLaunchTask”: “C/C++: g++.exe build active file” 需要与task.json里的label位置对应

-3- “args”: [],对应main.cpp里的

int main(int argc,char* argv)

tasks.json需要注意两个地方

“args”: [
“-fdiagnostics-color=always”,
“-g”,
f i l e " , " − o " , " {file}", "-o", " file","o","{fileDirname}${fileBasenameNoExtension}.exe”
],
args对应输入的g++命令

在这里插入图片描述

launch.json里的preLaunchTask代表先进行build,对应tasks.json的label,它依赖于cmake、make两个子task.

label:cmake对应的command是
cmake .. ,

label:make对应的command是mingw32-make.exe,
即对应cmake生成可调式文件的两条命令。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。