Mac下配置VSCode

最近配置了Mac和Linux下的VSCode来进行C++开发
可参考:https://zhuanlan.zhihu.com/p/48233069
但是有一些环境配置有出入,所以再记录一下。

整个的VSCode项目有三个项目文件要进行配置。

  • c_cpp_properties.json: 用来配置环境变量和编译器
  • tasks.json: 用来设定编译的操作,如设置命令行操作 clang -g file.c -o file
  • launch.json: 用来设定debug运行时的设置

要进行更改的主要是环境变量,要找到PC中库文件和头文件的装载地址。

相同的步骤

  1. 下载VS Code编译器
  2. 在Extensions中下载C/C++插件

Mac下

Mac下的C/C++编译器由XCode托管,包括相关的C库。所以配置C库和头文件首先要下载XCode

  1. 在App Store中下载XCode
  2. 安装成功后安装command line tool。运行命令xcode-select --install
  3. 安装成功后查看clang地址 (与参考链接中不同的地方):
    运行命令 gcc --version
    gcc version
    这里看到有一个 –with-gxx-include-dir. 这个包含了必要的C库和一些其他的链接库。所以最终的c_cpp_properties.json如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
        {
    "configurations": [
    {
    "name": "Mac",
    "includePath": [
    "${workspaceFolder}/**",
    "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/",
    "/Library/Developer/CommandLineTools/usr/include/c++/v1",
    "/Library/Developer/CommandLineTools/usr/lib/clang/11.0.0/include",
    "/Library/Developer/CommandLineTools/usr/include"
    ],
    "defines": [],
    "macFrameworkPath": [
    "/System/Library/Frameworks",
    "/Library/Frameworks"
    ],
    "compilerPath": "/usr/bin/clang",
    "cStandard": "c11",
    "cppStandard": "c++17",
    "intelliSenseMode": "clang-x64"
    }
    ],
    "version": 4
    }

Linux下

环境变量都在/usr/local/include里,所以直接包含这一个就可以了

tasks

每一个tasks其实就执行了一个gcc编译命令,注意c程序用gcc/clang编译,而c++程序要用g++/clang++编译。每一行编译命令就对应了下边的一个结构。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"type": "shell",
"label": "POJ_1000_cpp",
"command": "g++",
"args": [
"-g",
"${workspaceFolder}/1000_cpp.cpp",
"-o",
"${workspaceFolder}/1000_cpp"
],
"options": {
"cwd": "/usr/bin"
},
"problemMatcher": [
"$gcc"
],
"group": "build"
}

或者如果你要执行一个Makefile命令,那么就在当前目录下创建Makefile,然后command使用make。如下:

1
2
3
4
5
6
{
"type": "shell",
"label": "make command",
"command": "make",
"group": "build"
}

参考编写Makefile:(注意,经常生成makefile是在${workspaceFolder}/.vscode/下生成的,而不是在代码路径下。在生成makefile的时候要注意路径)

1
2
3
4
5
6
7
8
9
10
11
12
target=hello
obj=hello.o
CC=gcc -g

$(target):$(obj)
$(CC) $(obj) -o $(target)

$(obj):
$(CC) -c hello.c -o $(obj)

clean:
rm -rf $(target) $(obj)

launch

典型的launch文件来配置调试参数。

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"name": "POJ_1000_launch",
"type": "cppdbg", //必填项,调试类型
"request": "launch", //必填项,有两种类型,分别是launch和attach。launch就是vscode会打开这个文件进行执行,attach是这个文件已经打开了
"program": "${workspaceFolder}/1000", //是要进行调试的可执行文件
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true, //跳出terminal进行命令行输入
"MIMode": "lldb",
"preLaunchTask": "POJ_1000"
}