VS 代码的优雅解决方案 C/C++ 包括智能感知和构建项目的路径

Elegant solution to VS code C/C++ include path for both intelliSense and building project

如何创建 task.jsonlaunch.json 来构建和调试 C/C++ 项目,参数可以从 c_cpp_configuration.json 自动加载? (include路径、编译器路径等参数)

环境:

windows 10.0.19041
VS Code 1.52.1
VS Code extension: ms-vscode.cpptools 1.2.2

假设我有以下文件结构:

./
 |
 |--- .vscode/
 |
 |--- inc/
 |     |--- header1.h
 |     |--- header2.h
 |
 |--- src/
 |     |--- implementation1.c
 |     |--- implementation2.c
 |
 |--- main.c

并且我在全局 settings.json:

中设置了包含路径
"C_Cpp.default.includePath": ["${workspaceFolder}/inc"],

智能感知工作正常。我可以从main.c中的参考中找到headers的定义。 而且我知道我可以在没有 vs code 的情况下成功构建项目:

gcc -g .\*.c .\src\*.c -I .\inc

所以,如果我想用 vs 代码构建这个项目,我必须像这样设置 task.json

...
      "args": [
        "-g",
        "${workspaceFolder}\*.c", "${workspaceFolder}\src\*.c",
        "-I", "${workspaceFolder}\inc",
        "-o", "${fileDirname}\${fileBasenameNoExtension}.exe"
      ]
...

对于智能感知和项目构建工作,我必须在 settings.json(c_cpp_configuration.json) 和 task.json.
配置路径 我想要的是一个优雅的解决方案,我只需为智能感知和项目构建工作设置一次包含路径。可能吗?如果我能在没有额外扩展的情况下解决这个问题,那就太棒了。但是你有一个可以取代 ms-vscode.cpptools 的扩展并完成这个技巧,那也很棒。

我是这样操作的:卸载微软的C/C++扩展并替换为Clangd for code completion and Native Debug进行调试。我对这两个有更好的体验,包括更简单的配置。

Clangd 由一个名为 compile_commands.json 的文件配置,它只是每个源文件的编译器标志列表。

然后,开始使用合适的构建系统。例如,CMake 可以开箱即用地生成此文件。对于 Make,there's a tool 生成它。紧要关头可以自己写。

我建议您使用此扩展程序:

CPH Judge

因为它将清除调试器的所有问题,您可以在输入中直接输入值并获得输出!

优点:

  1. It has a test case option as we have in online exams, so you can type a and to the test case given in the question and check your answer, accordingly!
  1. You can run multiple test cases also!!