编程go之Mac OS

VSCode 编译C++

2017-05-28  本文已影响2507人  编程go

Demo git hub路径

在VSCode 官网上看到VSCode 神一样的支持很多language,以下将记录在使用OSX版本的VSCode 配置编辑与编译C++环境所踩过的深坑。

"clang++"一款OSX系统上的C++ 编译器

Clang 是一个 C++ 编写、基于 LLVM、发布于 LLVM BSD 许可证下的 C/C++/Objective C/Objective C++ 编译器,其目标(之一)就是超越 GCC

clang 的出现绝不是一次事故,Apple 使用 LLVM 在不支持全部 OpenGL 特性的 GPU (Intel 低端显卡) 上生成代码 (JIT),令程序仍然能够正常运行。之后 LLVM 与 GCC 的集成过程引发了一些不快,GCC 系统庞大而笨重,而 Apple 大量使用的 Objective-C 在 GCC 中优先级很低。此外 GCC 作为一个纯粹的编译系统,与 IDE 配合很差。加之许可证方面的要求,Apple 无法使用修改版的 GCC 而闭源。于是 Apple 决定从零开始写 C family 的前端,也就是基于 LLVM 的 Clang 了
备注:相关Clang WIKI 信息

安装VSCode 的C++ extention - cpptools

安装cpptools

配置task.json 文件

使用快捷键command + shift + B 组合,VSCode 会出现提示。

生成task.json 文件

点击"配置生成任务", 出现task.json 类型的dropdown list。

task.json dropdown list
选择Others, 系统生成task.json, 然后修改文件如下:[task.json 文件格式](https://go.microsoft.com/fwlink/?LinkId=733558
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "command": "clang++",
    "isShellCommand": true,
    "args": [
        "./SyntaxDemo/demo.cpp", // 入口文件
        "-g", // 是否生成调试信息
        "-O0", // 提示编译速度
        "-m32" // 64bit下
    ],
    "showOutput": "always"
}

配置setting.json文件

生成setting.json 文件

单击iostream,选择转义定义,系统自动生成setting.json。

{
    "files.associations": {
        "iostream": "cpp"
    }
}```
###  生成可执行文件
> 在配置完task.json 后操作快捷键 Command + Shift + B 生成可执行的文件(VSCode 默认生成a.out)。

![生成a.out 文件](https://img.haomeiwen.com/i704770/d98cb9e5d1d93f68.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

> **OSX 同样可以通过命令行工具直接生成C++ 可执行的文件**

clang++ -o 《out file》《C++ file》


###  执行a.out 文件

> 通过命令行工具,进入a.out 所在的文件夹路劲下,然后执行 **./a.out** 

### 配置launch.json 文件配置VSCode debugger 环境
> press F5 快捷键,选择配置环境**C++ (GDB/LLDB)**

![配置launch.json 文件](https://img.haomeiwen.com/i704770/c6be4f6db3afbed7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

{
"version": "0.2.0",
"configurations": [
{
"name": "(lldb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/a.out", // 指向生成的C++ 可执行文件
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"environment": [],
"externalConsole": true,
"MIMode": "lldb"
}
]
}

上一篇下一篇

猜你喜欢

热点阅读