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扩展插件安装:
- C/C++ v1.8.4(此插件需要注意版本)
- Chinese(中文简化)(选择性安装,要熟悉一点英文)
- C/C++ Extension Pack v1.3.0
- C/C++ Project Generator v1.2.11
- C/C++ Themes v2.0.0
- CMake v0.0.17
- CMake Tools v.1.14.31
- Code Runnner v0.12.0
- 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 .\src\main.cpp .\src\swap.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生成可执行文件,进行多文件编译并调试
输入ctrl+shift+p,选择cmake:Configure,选择g++(选定编译器)
打开终端,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生成可调式文件的两条命令。
VScode 中运行C++,并用g++命令、CMake、配置launch.josn和tasks.json来运行和调试可执行文件相关推荐
- 安装python环境与运行_专栏G|轻松学Python01:Python环境搭建与运行
原标题:专栏G|轻松学Python01:Python环境搭建与运行 | Cora编撰 | 和[PM10分男人]一起成长 Python是一个开源且功能强大的解释型语言,应用领域比较广泛,如今越来越受重视 ...
- VSCode中针对C语言的代码格式化配置
默认格式化工具 打开设置(Ctrl + ,) ,选择"用户"配置,找到"文本编辑器" - "Default Formatter": 安装了C ...
- vscode中设置用cnpm安装包
安装node 首先去node.js官网安装node. 查看node版本与安装路径 查看node版本(node -v),确保安装 查看node安装路径:where node 管理全局(-g)安装的包 在 ...
- VSCode中ESLint插件修复+配置教程
文章目录 vscode+eslint插件+配置教程 如果不好用 排查1: 如果出现后面回车符问题 排查2: 保存时好了但是一瞬间代码又回来了 排查3: 右下角是否开启eslint服务 排查4: 如果保 ...
- 关于VSCode中工作区的讲解与使用工作区还你一个轻量 的VSCode
VSCode的使用率在逐渐提高,但安装太多的插件会使得VSCode变得臃肿,甚至运行变慢,占用太多内存,此文章介绍了工作区,并如何来使用工作区更好地体验VSCode. 初次使用VSCode,肯定有很多 ...
- 【转】VScode tasks.json和launch.json的设置
转自:VScode tasks.json和launch.json的设置 - 知乎 目录 C++(方法1:不使用VSCode插件,较繁琐) C++(方法2:使用Native Debug插件) C++(方 ...
- Linux——从命令行配置网络、编辑网络配置文件
一.网络管理概念:: 网络管理(Networkmanager)是监控和管理网络设置的守护进程,命令行和图形工具与networkmanager通信,并将配置文件保存在/etc/sysconfig/net ...
- 下载安装Go SDK、命令运行及在Vscode中运行第一个HelloWorld
文章目录 下载安装Go SDK.命令运行及在Vscode中运行第一个HelloWorld 1.下载Go SDK 2.安装Go SDK 3.go version验证成功 4.go env查看配置信息 5 ...
- vscode 中C++运行编译运行多文件问题总结
来源链接:https://blog.csdn.net/weixin_38260878/article/details/101049070?depth_1-utm_source=distribute.p ...
最新文章
- 分布式锁的Redis实现
- python索引右往左_[Python笔记]序列(一)索引、分片
- go使用grpc实现异步_(python、go)基于ETCD的gRPC分布式服务器实现详解
- 使用srvany.exe将任何程序作为Windows服务运行
- java高级教程_高级Java教程
- 看完这些美食海报,你是不是又有灵感了?
- java 线程等待队列_Java多线程学习(五)——等待通知机制
- Python生成舒尔特的Excel表格
- 接收机抽取的Matlab仿真代码,接收机的MATLAB仿真程序代码
- PX4源码学习一--Pix和APM的区别
- (转帖)Spring循环依赖的解决办法
- GBA的内存其实很大
- JS验证身份证号地区码及最后一位校验码
- 数学历史上的三次危机
- 关于MFC模态对话框dlg.DoModal()返回-1的可能原因
- 微信小程序实现tab选中(特殊圆角)样式
- u盘安装windows,提示缺少所需的CD/DVD驱动器设备驱动程序,无法打开install.wim,U盘fat32和ntfs之间转换
- 区块链公司谈区块链技术最新应用
- Least Recently Use(LRU的简单实现)
- JMeter之接口测试——主要元件介绍