c++ properties_VS Code 搭建 c 编译、调试环境

本文演示了在 MacOS 系统,使用 VS Code,clang 编译器,以及 cmake 编译配置工具来配置开发环境。

同时,本文的配置上传到了 这里 作为模版仓库。

更好的排版:

VS Code 搭建 c 编译、调试环境​blog.vect0r.me

实现的功能:

  • [x] 代码高亮
  • [x] 自动补全
  • [x] 定义 / 引用跳转
  • [x] 一键编译 / 调试
  • [x] 断点

最终的项目目录树:

.
├── .editorconfig
├── .gitignore
├── .vscode
│   ├── c_cpp_properties.json
│   ├── launch.json
│   └── tasks.json
├── CMakeLists.txt
├── README.md
├── build
├── src
│   ├── CMakeLists.txt
│   ├── array.c
│   └── includes
│       ├── array.h
│       └── common.h
└── test
    ├── CMakeLists.txt
    └── array_test.c

5 directories, 13 files

安装扩展

  • C/C++: ms-vscode.cpptools
  • CMAKE: twxs.cmake

我知道有个叫做 CMake Tools 的扩展,但...体验并不好。

配置编译工具

首先请确认 clang、cmake、lldb 等已经安装,并添加到 PATH。

先来创建源代码文件夹和测试代码文件夹:

.
├── CMakeLists.txt
├── build
├── src
│   ├── CMakeLists.txt
│   ├── array.c
│   └── includes
│       ├── array.h
│       └── common.h
└── test
    ├── CMakeLists.txt
    └── array_test.c

一个 src 目录,来存放源代码文件;一个 test 目录来存放测试代码文件;以及一个 build 目录来存放编译之后的文件。然后在以上三个目录中分别创建一个 CMakeLists.txt 文件:来控制不同的代码的编译方式。

项目根目录 ./CMakeLists.txt:

cmake_minimum_required(VERSION 3.15)
project(vscode-c-project LANGUAGES C)

set(CMAKE_C_FLAGS "-g")

add_subdirectory(src)
add_subdirectory(test)

src 目录 ./CMakeLists.txt:

要记得给 clang 一个 -g 的 flag,来生成带有调试信息的编译文件。

include_directories(includes)

add_library(array SHARED array.c)

注明 include 头文件的位置,将 array.c 编译成共享链接库。

test 目录 ./CMakeLists.txt:

include_directories(../src/includes)

add_executable(array_test array_test.c)
target_link_libraries(array_test array)

同样注明 include 头文件的位置,编译可执行文件,然后链接 src 目录下生成的链接库。

配置编译器

执行 C/C++: Edit Configurations,生成 .vscode/c_cpp_properties.json 文件。这里定义了编译器的路径,还有搜索一些库文件的路径,以及编译的版本。因为头文件的位置并不和源文件在同一目录下,所以这里应该指明一下包含头文件的位置:

{
  "configurations": [
    {
      "name": "Mac",
      "includePath": ["${workspaceFolder}/src/includes"],
      "defines": [],
      "macFrameworkPath": ["/System/Library/Frameworks", "/Library/Frameworks"],
      "compilerPath": "/usr/bin/clang",
      "cStandard": "c11",
      "cppStandard": "c++17",
      "intelliSenseMode": "clang-x64"
    }
  ],
  "version": 4
}

配置任务

执行 Tasks: Configure Task,生成 .vscode/tasks.json 文件,然后配置两个任务:

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "clean",
      "type": "shell",
      "command": "rm -rf build && mkdir build"
    },
    {
      "label": "build",
      "type": "shell",
      "command": "cd build && cmake .. && make",
      "dependsOn": "clean",
      "group": {
        "kind": "build",
        "isDefault": true
      }
    }
  ]
}

一个 clean 任务用来清理编译之后的文件;一个 build 任务用来把代码都编译到 build 文件下。

同时将 build 任务设为了默认的编译任务,按 shift + command + b 可以直接一键编译。

到这里就完成编译的配置了,能成功编译之后再进行下一步。

配置调试

直接点击调试栏的齿轮,选择 C++ (GDB/LLDB),会自动生成 .vscode/launch.json 文件。简单修改一下 programpreLaunchTask 字段:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "clang build and debug active file",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/build/${relativeFileDirname}/${fileBasenameNoExtension}",
      "args": [],
      "stopAtEntry": true,
      "cwd": "${workspaceFolder}",
      "environment": [],
      "externalConsole": false,
      "MIMode": "lldb",
      "preLaunchTask": "build"
    }
  ]
}

在每次调试前自动执行编译任务,并且调试 build 目录下编译之后的程序。

代码规范

如果有必要的话可以在添加 .editconfig 来控制代码风格,.gitignore 来在 git 检测代码更改时忽略编译之后的文件,README.md 来说明项目内容。

最终的效果图:

4a4b05d7f5e73a6bda361717bc97f546.png
最终效果

直接按 F5 就会编译并调试当前打开的文件哦~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值