简述Vscode C/C++环境配置及原理

目录

  • 说明
  • 一、准备工作
    • --下载编译器并设置环境变量
      • 1)下载编译器
      • 2)解压
      • 3)环境变量
  • 二、手动编译文件(麻烦)
  • 三、C++单文件配置
    • 1. 理解launch.json内容
    • 2. 理解tasks.json内容
  • 四、C++多文件配置
      •  --多文件运行时,vscode略显麻烦
    • 1. 手动解决方法
    • 2. 配置
      •  方案一:(手动)
      •  方案二:(插件)
    • 3. 原理

说明

  1. C/C++:.c .cpp ->编译器 -> .exe (可执行文件)

  2. VSCode :编辑器,需配套编译器(winlibs…)

    Visual studio / Code Blocks /Pycharm : IDE–编译器/解释器+一套完整的生产工具,可直接一键运行代码

看到的一句话: “小白的话,还是老老实实用ide,各种语言都有对应的,c/c++可以用 devc++,codeblocks, clion),vs(vc++,c#)。java,python用IntelliJ 全家桶。大家要明白,vscode永远只是一个编辑器,而且折腾环境配置极其消耗小白的学习意志。



一、准备工作

–下载编译器并设置环境变量

1)下载编译器

​  WinLibs - GCC+MinGW-w64 compiler for Windows

​   --Release versions-发行版本

​   --UCRT runtime-UCRT运行时: Win64/Win32选择合适的下载

ps

  1. 7-zip和zip区别:7-zip压缩效率高(10MB变1MB),但必须下载7-zip才能解压缩

    zip虽大但软件要求不高。

  2.- without LLVM/Clag/LLD/LLDB:意为没有以上编译器组件

​  (F 搜 :有github文件加速)

2)解压

mingw32//bin路径下,cmd运行gcc --version(c编译器)、g++ --version(c++编译器)看解压是否成功

3)环境变量

 复制mingw32//bin路径,打开系统环境变量path新建,粘贴,确定

 然后随便打开命令行(cmd)就可运行环境。



二、手动编译文件(麻烦)

 1. 创建一个cpp文件(eg:test.cpp),在vscode输入可执行代码,还不能运行。
 2. 找到电脑中cpp文件路径,cmd打开,输入代码“g++ test.cpp -o test.exe1
 3. 编译完成,生成可执行文件.exe



三、C++单文件配置

cpp文件处,不仅有代码文件test.cpp,还有.vscode文件夹(vscode创建)里面有.json文件(指导vscode处理用户写的代码)

  1. 打开vscode,若先前已有.vscode文件,需删除。

  2. 然后必须在.cpp文件处(即代码界面) 按F5选择环境–c++(GDB/LLDB)2,即会创建一个launch.json文件(还不行)

  3. 此时的vscode可能没识别安装的gcc编译器,需要重启vscode,再按F5选择环境–g++.exe-生成和测试活动文件即可运行3 也会创建一个launch.json文件。

ps:选中哪个源文件按F5就会生成哪个.exe.文件



1. 理解launch.json内容

launch.json就是通过 preLaunchTask来匹配tasks.json里面的任务

  1. 'name':在vscode界面右下角显示名称(eg:g++.exe-生成和测试活动文件)

  2. 'type':显示配置类型(eg:cppdbg4)–暂时不管

  3. 'request':表示启动或附加,用于调试–暂时不管

  4. 'program':表示调试的环境,即程序可执行的完整路径

    eg: test.cpp源文件会生成 test.exe可执行文件,program按路径识别要执行的文件test.exe(给什么文件运行什么文件)“C\…\demo\Cpp\test.exe”

    fileDirname:vscode的宏,在运行时会被替换,替换它后面给的文件(test.exe)所在文件夹的路径(eg:C\…\demo\Cpp)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nig8o4HW-1675052060980)(C:\Users\KKH\AppData\Roaming\Typora\typora-user-images\image-20230129151223570.png)]

    fileBasenameNoExtension:vscode的宏,vscode打开哪个源文件,fileBasenameNoExtension就会被替换成此源文件的名(test)

    ps:"NoExtension"表示没有扩展名5,所以test没有.exe

  5. 'externalConsole':若为false,即会用vscode的集成终端输出;若为true,则会用系统的集成终端输出(”弹窗“,要自己叉掉)

  6. 'miDebuggerPath':表示调试器6的路径,即gdb.exe的路径

ps

​ 1)单步调试:在哪一行打断点,程序运行时就会停在那行(断点那行也不执行)不执行后面的代码,再按F10时继续运行。

​ 2)若调试时,提示报错无法调试,则看看'miDebuggerPath'有无拼写错误等,有的调试器不叫"gdb.exe"

  1. 'preLaunchTask':调试会话开始前要运行的任务,即调试.exe应用程序之前,告诉vscode要什么

    eg:program启动**.exe文件->miDebuggerPath 用调试器调试->externalConsole ->判断是否用外部的控制台(系统的集成终端)



2. 理解tasks.json内容

tasks.json作用:启动g++

  1. 'label':内容和’preLaunchTask’一样,用于让launch.json匹配

  2. 'command':运行cmd,并输入其后面的路径(eg:C:\\ming32\\bin\\g++.exe),准备运行g++编译器

  3. 'args'

    -g:就是负责调试功能。一定要有,若没有断点会失效7打了断点也会继续执行下面。

    file :宏,运行时会替换为所运行的源文件名(eg:test.exe

    ​ -o

    fileDirnamefileBasenameNoExtension 含义同launch中的。

2.3结合,相当于**手动编译文件(麻烦)**中操作2:找到电脑中cpp文件路径,cmd打开,输入代码“g++ test.cpp -o test.exe



四、C++多文件配置

 --多文件运行时,vscode略显麻烦

如果只是单文件配置,当想多文件运行时会报错(eg:test.cpp调用hello.cpp中的PrintHello函数,会报错找不到),因为一次只编译运行了一个源文件。

//test.cpp
#include 
#include 
void PrintHello();//声明函数

int main(){
    PrintHello();//调用函数
    system("pause");
    return 0;
}
//hello.cpp
#include 
void PrintHello(){
    printf("hello\n");
}


1. 手动解决方法

 eg:“g++ test.cpp -o test.exe ”应加上hello.cpp变为“g++ test.cpp hello.cpp -o test.exe ”–两文件一起编译,并链接成一个test.exe文件


2. 配置

 方案一:(手动)

  在 tasks.json-> file–原先只会被替换为一个源文件名(test.cpp),现需自己(另起一行)补其他文件名(hello.cpp

 方案二:(插件)

  1. 下载工具CMake

    Download | CMake

    –Binary distributions:

    ​ --Windows x64 ZIP(推荐) / Windows x64 Installer

    ps:软件有ZIP包的话建议使用ZIP包,比安装程序(Installer)更加绿色无广

  2. 打开cmake程序(.exe)所在路径,cmd运行输入代码cmake查看是否成功安装

  3. 配置环境变量

  4. 打开vscode搜索插件cmake并安装(cmake8、cmake tools9两个都要安装)

  5. 创建cmake文件,百度一下教程


3. 原理

 编译器将hello.cpptest.cpp编译为二进制文件hello.otest.o再链接为一个test.exe文件

  1. 执行test.cpp文件,其中void PrintHello();正确声明了PrintHello()函数并调用,语句没有问题,所以成功编译为二进制文件hello.o
  2. g++ test.cpp -o test.exe ”就是只将 test.cpp 变为了 test.o然后直接链接为 test.exe,忽略 hello.cpp,此时程序中PrintHello()函数只有声明没有定义。

  1. g++ test.cpp:告诉g++编译器要运行那个文件;-o test.exe:告诉g++编译器要输出什么 ↩︎

  2. 先前下载的g++、gcc编辑器对应的环境 ↩︎

  3. json等配置文件起作用 ↩︎

  4. 表示配置类型为g++类型 ↩︎

  5. “.exe”,".cpp"之类 ↩︎

  6. 负责完成调试操作 ↩︎

  7. g++不会为断点代码

    ↩︎

  8. 功能:打相关脚本代码时会有提示 ↩︎

  9. 更重要。功能:将cmake的一些终端命令变为vscode的UI的点击按钮 ↩︎

你可能感兴趣的:(vscode,c语言,ide,c++)