『macOS』从零开始,用 VSCode 编写、编译、运行、调试C、C++的环境配置

本人一直使用Xcode和CLion编写C和C++的程序,因为Mac上VSCode的环境一直配置不好,要么无法运行要么无法调试。在我终于弄懂了如何配置VSCode环境后,决定分享一下我的操作过程。

如果你的Mac也无法成功用VSCode写c或cpp,或者配置中有一些问题,那这个教程就是为你而来。

备注一下我的电脑情况:Intel 的 MacBook Pro, macOS Catalina 10.15.7



clang、lldb等命令行工具的安装

在终端里输入clang --versionlldb --version 看一下是不是装好了gcc、g++(编译器)和lldb(调试器)。在这里插入图片描述

如果出现command not found,说明还没有装好,请去APP store下载Xcode。Xcode带有很多很多的命令行工具,包括上面的这些。注意Xcode的体积约12GB,如果你不想下载这么大的软件,也可以按照提示仅下载Command line tools,体积会小很多。

VSCode的安装

官网下载安装visual studio code. 略。

VSCode的环境配置与基础操作

手动编译运行一个程序

打开vscode,你会看到这样的界面
在这里插入图片描述
左边的边栏上,这几个按钮的功能如下:在这里插入图片描述

我们随便打开或者新建一个文件夹。这里我在桌面上新建了一个名为「c」的文件夹,里面写了一个hello world。

在这里插入图片描述
程序写完了,如何编译运行呢?

首先command + S保存(不要忽略保存这一步),然后在下面的终端中(按command+J可打开底栏),输入 g++ Helloworld.cpp -o Helloworld 编译,再输入./Helloworld运行程序。在这里插入图片描述

可以看到这段程序已经成功运行。但是,手输这两句命令是不是太烦了?如何一键运行?我们需要安装一个插件——coderunner.

一键编译运行——coderunner的配置

下载插件coderunner。这样vscode的右上角会出现运行按钮,点击即可自动编译运行,省去了手输g++ xxx.cpp -o xxxg++ xxx.cpp -o xxx -W -Wall -O2 -std=c++17等命令的麻烦。

在这里插入图片描述
在这里插入图片描述
需要注意的是,要在coderunner的设置中把Run in terminal打开(如果不打开,程序运行结果会在’output‘中显示,output是只读的,会导致无法scanfcin等)。

另外强烈建议把save file before run打开,防止没有先保存再运行导致错误结果。
在这里插入图片描述
建议在当前工作区新建一个.vscode文件夹,里面新建一个settings.json,复制上去一下内容。

settings.json

我的settings.json 内容

{
    "code-runner.executorMap": {
        "cpp": " cd $dir && g++ $fileName -o $fileNameWithoutExt -W -Wall -std=c++17 &&  ./$fileNameWithoutExt",
        "c"  : " cd $dir && gcc $fileName -o $fileNameWithoutExt -W -Wall -std=c17 &&  ./$fileNameWithoutExt",
    },
    "code-runner.clearPreviousOutput": true,
    "code-runner.saveAllFilesBeforeRun": false,
    "code-runner.saveFileBeforeRun": true,
    "code-runner.showExecutionMessage": true,
    "code-runner.runInTerminal": true,
    "code-runner.preserveFocus": false,
    "code-runner.ignoreSelection": true,
    "launch": {
        "configurations": [],
        "compounds": []
    }
}

上面这个json可以更改一些coderunner的设置,包括运行代码的命令等。

但是coderunner只能运行,不能调试,打断点没有任何效果。如果要调试的话,我们需要手动配置一些东西,这些“东西”就是下面要说的—— tasks.jsonlaunch.json.

断点调试——tasks.json和launch.json的配置

现在,我们给刚才的程序打上断点,然后在左侧边栏中的调试按钮乱点一通,可能会发现始终无法调试。(因为VSCode给的默认配置不太好使)
在这里插入图片描述

为了调试,首先我们要下载一个插件 CodeLLDB
在这里插入图片描述

我们在工作区的.vscode文件夹内(如果没有的话就新建一个),新建两个名为 tasks.jsonlaunch.json 的文件。
在这里插入图片描述

把下面这些内容复制上去。(有空的时候我会更新详解一下这些配置文件有什么用、为什么要这样写,不过现在,你先不要管这是什么,先复制上去)

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "lldb",
            "request": "launch",
            "name": "cpp debug",
            "preLaunchTask": "g++ compile",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            // "environment": [], // 放置环境变量
            "cwd": "${workspaceFolder}",
        }
    ]
}

tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "g++ compile",  //(这个label随便设置都可以,会显示在选项里)
            "type": "shell", // shell: 输入命令
            "command": "cd $dir && g++ $fileName -g -o $fileNameWithoutExt -W -Wall -std=c++17 &&  ./$fileNameWithoutExt",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "echo": true, 
                "reveal": "silent",
                "focus": false, 
                "panel": "shared", 
                "showReuseMessage": true, 
                "clear": false
            },
            "options": {
                "cwd": "${workspaceFolder}" 
            },
            "problemMatcher": {
                "owner": "cpp",
                "fileLocation": "absolute",
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        },
    ]
}

保存好这两个json配置文件之后,在vscode左边边栏的“调试”中,应该就能看到cpp debug的字样。
在这里插入图片描述

点击那个cpp debug旁边的运行按钮,等着。

不出意外的话,程序会卡在断点处。
在这里插入图片描述

这样我们就可以调试程序啦!
在这里插入图片描述

在左侧会显示变量的值,如果需要关注某个变量,可以将其添加到’watch‘。可以使用上方的箭头按钮,也可以用快捷键F5(continue)、F11(单步运行)、Shift+F11(单步跳过)等控制调试。

一些VSCode插件推荐

首先是一些必备插件

刚才讲过的CodeRunnerCodeLLDB.
在这里插入图片描述
在这里插入图片描述

C/C++
在这里插入图片描述

美化代码,让代码语法高亮更加准确的插件:Better C++ Syntax
在这里插入图片描述
Beautify
在这里插入图片描述
让多个括号(比如 {{},(({},[]))}{[()]})能够以多彩颜色显示的插件 Bracket pair colorizer 2
在这里插入图片描述

我个人比较喜欢的主题 One Dark Pro
在这里插入图片描述

(现在是凌晨00:52,暂时不写了,未完待续)

THE END

  • 7
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值