Windows/macOS使用VSCode搭建C/C++的开发/Debug环境

本文面向的对象是初次接触搭建C语言开发环境的学生或编程爱好者,以及想脱离诸如VC++6.0等过时开发工具从而转用VScode的人群

本文内容较多,篇幅较长,可按照需要选择阅读,文中如有纰漏,欢迎斧正。

我郑重承诺下面会是一篇极为详细的教程:


目录

一、安装并配置VScode

二:安装编译器

1.1.Windows环境下载并配置MinGW:

1.2.macOS环境下安装编译器(可选gcc/clang编译器):

配置使用gcc作为编译器

配置使用clang作为编译器

macOS环境下配置VScode使用编译器

2.(建议)VSCode IntelIiSence的包含路径设置

三、配置Debug环境

附:CodeLLDB插件调试环境(优雅地Debug)配置

四、参考文档附录

1.Windows VSCode使用MinGW配置文件参考

2.macOS VSCode 配置文件

gcc编译器对应文件参考

clang编译器对应文件参考

五、文末填坑

Q1:macOS配置gcc为什么要这么麻烦? 既然macOS gcc的安装和配置比clang麻烦,为什么要把gcc的配置方法也写出来,只说clang不就可以了吗?

Q2:为什么会写这篇文章?


一、安装并配置VScode

这里我们可以直接去微软官网下载安装,建议在跳转下载页面右键单击“direct download link”复制链接到迅雷下载,会快很多。

直接选择自己系统对应的Stable版本即可,当然也可以试试Insiders公测版

在VScode的扩展界面里搜索并下载如下扩展:

1.C/C++ Extension Pack

(扩展包里内含有C/C++、C/C++ Themes、CMake Tools和CMake,也一起装了)

2.Chinese(Simplified) 中文汉化包

3.Code Runner(运行代码)

安装好Code Runner后要记得在它的拓展设置里勾选“Run In Terminal”

​4.CodeLLDB(更优雅的Debug调试环境)(在 第三大节附录“CodeLLDB插件调试环境配置” 有教程)

5.indent-rainbow(可选,可以根据代码前缩进颜色看出代码层)

建议:可以在“文件”选项中勾选自动保存(macOS版本如图,在菜单栏;Windows版本的在窗口左上角)

二:安装编译器

1.1.Windows环境下载并配置MinGW:

MinGW的全称是:Minimalist GNU on Windows,其实也就是gcc(c/c++编译器)在Windows上的移植版本。

附:官方开源库地址,可以下载最新版本的MinGW:(示例:x86_64-12.2.0-release-win32-sjlj-rt_v10-rev0.7z

下载MingW64压缩包并解压至合适的位置,然后在解压后的文件夹里打开bin文件夹按如图所示复制文件地址

​然后转到系统设置->系统->系统信息->高级系统设置->环境变量->系统变量里 选中并编辑Path,然后新建一个项把刚才的地址给复制进去,点击保存就可以了(注意是要编辑系统变量里的Path而非用户变量的Path)

编辑系统变量里的Path而非用户变量的Path

使用“win+R”快捷键,输入cmd后回车(另:使用终端(terminal)也是可以的),在弹出的窗口中输入“gcc -v -E -x c++ -”命令检验gcc是否配置好,如果和下面的一样就说明OK了。

建议把“#include <...> search starts here:”以下的路径复制一下,后面在配置IntelliSense中的包含路径有用(参见“2.配置VSCode的IntelliSence的包含路径设置”)

1.2.macOS环境下安装编译器(可选gcc/clang编译器):

配置使用gcc作为编译器

这里借鉴一下前辈的方法,在终端(terminal)中用以下命令回车安装homebrew:

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

运行时会提示配置下载源和输入密码(输入密码的时候不会显示出来,输完直接回车),按照提示信息继续就好

等配置完homebrew后按照提示信息输入刷新终端或者手动重启终端,

然后在终端内输入以下命令回车安装编译器gcc:

brew install gcc

安装完成以后,再次运行上述命令,获取通过HomeBrew安装的gcc版本。

​输入“vim ~/.zprofile”回车后按下i键进入编辑模式,按如图所示的方式复制并修改以下的文本来更改系统的配置信息(X代表你gcc的大版本,例如我的是12)。

alias gcc='gcc-X'  
alias cc='gcc-X'  
alias g++='g++-X'  
alias c++='c++-X'

输入完毕后按esc退出编辑模式,然后输入英文的“:wq”保留更改并退出文件编辑

在terminal内输入“source ~/.zprofile”(Bash请修改命令为“source ~/.bash_profile“)并回车应用更改后,输入“gcc -v”以显示gcc的版本和安装位置

输入“gcc -v -E -x c++ -”命令检验gcc是否配置好并查看头文件路径,如果和下面的一样就说明OK了。

建议把“#include <...> search starts here:”下黄框内路径复制一下,后面在配置IntelliSense 配置中的包含路径有用(参见“2.配置VSCode的IntelliSence的包含路径设置”)。

配置使用clang作为编译器

首先在terminal内用“clang -v”或者“clang --version”(gcc -v也可以,具体会在文末解释)回车检查Mac是否带有clang

如果不是以上结果,直接在terminal里输入以下命令并回车,然后在弹出的窗口中确认安装clang。

Xcode-select --install

建议:在clang安装完成后,在终端里运行下列命令并复制框选路径,后面在配置IntelliSense 配置中的包含路径有用(参见“2.配置VSCode的IntelliSence的包含路径设置”)。

clang -v -E -x c++ -

macOS环境下配置VScode使用编译器

在桌面上新建一个文件夹(不要用中文命名,切记!),然后在VScode中打开

在VScode打开的文件夹里新建一个.c文件,然后按照如图所示点开配置

注意新建的.c文件要在打开的文件夹内

然后在扩展设置里根据你自己的情况进行配置,完成后会自动生成一个带有c_cpp_properties.json文件的.vscode文件夹(C语音填选gcc或clang,C++填选g++或clang++)。

gcc编译器按照如图所示配置

clang直接如图所示设置,是不是很简单?

2.(建议)VSCode IntelIiSence的包含路径设置

在刚刚的C语言文件编辑界面中如图所示操作:

三、配置Debug环境

在刚刚C语言文件里自己写一个简单的代码或者直接使用如下代码:

#include<stdio.h> 
int main() 
{
    for (int i = 0; i < 4; i++)
    {
        printf("Hello,World!\n");
    }
    return 0;
}

在某个函数的行前打一个断点,点击运行旁边的选项按钮,选择调试C/C++文件

​按照各图下面的说明操作,会在.vscode文件夹里生成task.json和launch.json文件

此处根据你自己的编译器选择对应的调试配置,完成后会在.vscode文件夹里生成task.json文件

​点击“创建 launch.json 文件”,在选择调试器时点选“C++(GDB/LLDB)”生成launch.json文件

注意:macOS版VScode自C/C++插件的1.9.7版本更新后,已经不提供补全launch.json文件的功能了(附录里也会提供各系统各编译器环境下的task.json和launch.json文档以供参考),当然也可以手动安装插件的指定版本使用。

现在你已经在电脑上配置好了开发C语言所需的基础开发环境了,预祝你在开发的道路上一路顺风!

附:CodeLLDB插件调试环境(优雅地Debug)配置

如图所示操作:

就可以在VSCode的集成终端里进行输入调试了。

launch.json

{
  // 使用 IntelliSense 了解相关属性。 
  // 悬停以查看现有属性的描述。
  // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "type": "lldb",
      "request": "launch",
      "name": "Debug",
      "program": "${workspaceFolder}/${fileBasenameNoExtension}",
      "args": [],
      "cwd": "${workspaceFolder}"
    }
  ]
}

四、参考文档附录

1.Windows VSCode使用MinGW配置文件参考

tasks.json

{
  "tasks": [
    {
      "type": "cppbuild",
      "label": "C/C++: gcc.exe 生成活动文件",
      "command": "C:/mingw64/bin/gcc.exe",     /*此处就放你复制到Path里面的路径+/gcc.exe*/
      "args": [
        "-fdiagnostics-color=always",
        "-g",
        "${file}",
        "-o",
        "${fileDirname}\\${fileBasenameNoExtension}.exe",
        ""
      ],
      "options": {
        "cwd": "C:/mingw64/bin"             /*这里直接放你复制的路径就好*/
      },
      "problemMatcher": [
        "$gcc"
      ],
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "detail": "调试器生成的任务。"
    }
  ],
  "version": "2.0.0"
}

launch.json

{
  // 使用 IntelliSense 了解相关属性。 
  // 悬停以查看现有属性的描述。
  // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "gcc.exe - 生成和调试活动文件",
      "type": "cppdbg",
      "request": "launch",
      "args": [],
      "stopAtEntry": false,
      "externalConsole": true,
      "cwd": "c:/Users/swj/Desktop/s",
      "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
      "MIMode": "gdb",
      "miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe",/*这里也是直接放你复制的路径,注意/要用\\替代*/
      "setupCommands": [
        {
          "description": "为 gdb 使用整齐打印",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ]
    }
  ]
}

2.macOS VSCode 配置文件

gcc编译器对应文件参考

tasks.json

{
  "tasks": [
    {
      "type": "cppbuild",
      "label": "C/C++: gcc 生成活动文件",
      "command": "/opt/homebrew/Cellar/gcc/12.2.0/bin/gcc-12",
      "args": [
        "-fdiagnostics-color=always",
        "-g",
        "${file}",
        "-o",
        "${fileDirname}/${fileBasenameNoExtension}"
      ],
      "options": {
        "cwd": "${fileDirname}"
      },
      "problemMatcher": [
        "$gcc"
      ],
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "detail": "调试器生成的任务。"
    }
  ],
  "version": "2.0.0"
}

launch.json

{
  // 使用 IntelliSense 了解相关属性。 
  // 悬停以查看现有属性的描述。
  // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "gcc - 生成和调试活动文件",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/a.out",
      "args": [],
      "cwd": "${workspaceFolder}",
      "environment": [],
      "externalConsole": true,
      "MIMode": "lldb",
      "preLaunchTask": "C/C++: gcc 生成调试文件"
    }
  ]
}

clang编译器对应文件参考

tasks.json

{
  "tasks": [
    {
      "type": "cppbuild",
      "label": "C/C++: clang 生成活动文件",
      "command": "/usr/bin/clang",
      "args": [
        "-fcolor-diagnostics",
        "-fansi-escape-codes",
        "-g",
        "${file}",
        "-o",
        "${fileDirname}/${fileBasenameNoExtension}"
      ],
      "options": {
        "cwd": "${fileDirname}"
      },
      "problemMatcher": [
        "$gcc"
      ],
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "detail": "调试器生成的任务。"
    }
  ],
  "version": "2.0.0"
}

launch.json

{
  // 使用 IntelliSense 了解相关属性。 
  // 悬停以查看现有属性的描述。
  // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "clang - 生成和调试活动文件",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/a.out",
      "args": [],
      "stopAtEntry": false,
      "cwd": "${fileDirname}",
      "environment": [],
      "externalConsole": false,
      "MIMode": "lldb",
      "preLaunchTask": "C/C++: clang 生成调试文件"
    }
  ]
}

五、文末填坑

Q1:macOS配置gcc为什么要这么麻烦? 既然macOS gcc的安装和配置比clang麻烦,为什么要把gcc的配置方法也写出来,只说clang不就可以了吗?

答:其实一开始的OSX是默认使用gcc作为编译器的,但后面苹果自己也整出了一个编译器:Clang,而且由于版权问题自macOS10.12之后系统就不自带gcc编译器,默认使用clang作为c语言编译器。

但是,苹果在更换默认编译器后,为了照顾老用户对gcc的使用习惯,“鸡贼”的把有关gcc的命令行链接给了clang,所以如果你不修改并应用~/.zprofile(Bash请修改“~/.bash_profile“)直接在terminal里面输入“gcc -v”和“clang -v”回车,你都会看到clang的显示结果。

​虽然clang是新一代且安装更方便的编译器,但Windows上现在都是使用的gcc进行的C代码编译。而且一般高校计算机系C语言的编译器选择都是gcc,如果编译器不同,可能执行的结果也会有所不同,所以才因此打算讲解的全面一点。

Q2:为什么会写这篇文章?

答:本人计算机系大一学生一枚,之前看M1芯片的Mac可以运行iOS应用就选择了M1的MacBook,但是在配置VSCode搭建C语言开发环境的碰到了不少坑,而且班里同学们用着不知道哪个年代的VC++6.0,想换一个VSCode写代码,所以就根据自己的经验详细总结出了这篇文章。希望能对看到并需要的人有所帮助。


本文于2022.10.10 20:55在知乎发布

于2023.3.1 20:47转载CSDN

  • 9
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值