美文网首页
VSCode 开发 C 在Mac的配置

VSCode 开发 C 在Mac的配置

作者: 胡矿 | 来源:发表于2018-09-22 23:48 被阅读532次

    一、先安装clang

    brew install --with-toolchain llvm
    

    注意安装的时候要接电源,因为编译需要花很长时间;我的Macbook pro 2017花了将近40分钟才编译完成,电池消耗大约30%

    参考:https://embeddedartistry.com/blog/2017/2/20/installing-clangllvm-on-osx

    二、安装插件

    三、配置

    (一)创建工作区文件夹

    建立一个文件夹,比如命名为 c_workspace,然后在里面建立一个 .vscode 文件夹

    在VSCode里面选择 打开文件夹 打开工作区,例如这里的 c_workspace

    (二)配置文件

    涉及到两个配置文件

    1. tasks.json
    {
        // See https://go.microsoft.com/fwlink/?LinkId=733558
        // for the documentation about the tasks.json format
        "version": "2.0.0",
        "tasks": [
            {
                "label": "Compile",
                "type": "shell",
                "command": "clang",
                "args": [
                    "${file}",
                    "-o", // 指定输出文件名,不加该参数则默认输出a.exe,Linux下默认a.out
                    "${fileDirname}/${fileBasenameNoExtension}",
                    "-g", // 生成和调试有关的信息
                    "-Wall", // 开启额外警告
                    "-std=c11" // C语言最新标准为c11,或根据自己的需要进行修改
                ],
                "presentation": {
                    "echo": true,
                    "reveal": "always",
                    "focus": false,
                    "panel": "shared",
                    "showReuseMessage": true
                },
                "dependsOn": [
                    "Sleep"
                ]
            },
            {
                "label": "Clean",
                "type": "shell",
                "command": "rm",
                "args": [
                    "-rf",
                    "${fileDirname}/${fileBasenameNoExtension}",
                    "${fileDirname}/${fileBasenameNoExtension}.dSYM"
                ],
                "presentation": {
                    "echo": true,
                    "reveal": "always",
                    "focus": false,
                    "panel": "shared",
                    "showReuseMessage": true
                }
            },
            {
                "label": "Sleep", // 没有任何功能,只是简单暂停一下,增加视觉效果
                "type": "shell",
                "command": "sleep",
                "args": [
                    "1"
                ],
                "presentation": {
                    "echo": true,
                    "reveal": "always",
                    "focus": false,
                    "panel": "shared",
                    "showReuseMessage": true
                },
                "dependsOn": [
                    "Clean"
                ]
            },
            {
                "label": "Build",
                "group": {
                    "kind": "build",
                    "isDefault": true
                },
                "dependsOn": [
                    "Compile"
                ],
                "problemMatcher": "$gcc"
            }
        ]
    }
    
    1. launch.json
    {
        // Use IntelliSense to learn about possible attributes.
        // Hover to view descriptions of existing attributes.
        // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",
        "configurations": [
            {
                "name": "(lldb) Launch",
                "type": "cppdbg",
                "request": "launch",
                "program": "${fileDirname}/${fileBasenameNoExtension}",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${workspaceFolder}",
                "environment": [],
                "externalConsole": true, // 如果要调试有输入互动的程序,那么就要从外部控制台启动;vscode的集成控制台不支持输入;
                "MIMode": "lldb",
                "preLaunchTask": "Build"
            }
        ]
    }
    

    这两个文件的写法参考:https://code.visualstudio.com/docs/languages/cpp

    屏幕快照 2018-09-23 00.17.18.png

    (三)注意事项

    1. Task 之间的依赖关系:

    每一个Task需要依赖的前置Task,写在 dependsOn: [ ... ] 当中,不分先后,并发执行;

    如果需要有明确的依赖,则应该把 Task 依次连接,形成依赖链,例如上面的例子:

    Build <-- Compile <-- Sleep <-- Clean

    错误的做法:

    Build <-- Compile, Sleep, Clean

    即如果在 Build 当中:

    "dependsOn": [
        "Compile",
        "Sleep",
        "Clean"
    ]
    

    的实际效果是:Build 在 这三个Task 全部完成之后再执行,但是这三个任务是并发的。

    四、使用方法

    (一)编译

    • 快捷键:shift + command + b :编译,实际上是调用上面定义的 launch.json 里的任务

    • 命令面板:shift + command + p ,键入 Tasks: Run Task,然后选择上面定义的 Build 任务

    屏幕快照 2018-09-22 23.31.13.png 屏幕快照 2018-09-22 23.31.53.png 屏幕快照 2018-09-22 23.32.38.png

    (二)运行

    1. 在终端中运行

    ctrl + ` 打开终端

    屏幕快照 2018-09-22 23.35.10.png
    1. 在调试中运行

    别忘记设置断点。由于程序是在外部命令行窗口执行的,别忘记把程序的窗口切换出来。

    屏幕快照 2018-09-22 23.36.59.png

    五、其它参考

    Windows 下的安装和配置:https://www.zhihu.com/question/30315894

    Clang 常用参数:https://www.jianshu.com/p/96058bf1ecc2

    相关文章

      网友评论

          本文标题:VSCode 开发 C 在Mac的配置

          本文链接:https://www.haomeiwen.com/subject/fxffoftx.html