4. vscode c++ 环境及工程搭建 clangd + mingw

文章目录

  • [1. 插件安装](#1. 插件安装)
    • [1.1 新建配置](#1.1 新建配置)
    • [1.2 插件安装](#1.2 插件安装)
  • [2. 工程创建](#2. 工程创建)
    • [2.1 设置cmake路径](#2.1 设置cmake路径)
    • [2.2 编译器选择](#2.2 编译器选择)
    • [2.3 工程创建](#2.3 工程创建)
    • [2.4 工程实现](#2.4 工程实现)
      • [2.4.1 项目配置](#2.4.1 项目配置)
    • [2.5 代码实现](#2.5 代码实现)

1. 插件安装

1.1 新建配置

新建配置,防止配置文件安装太多,会导致插件冲突

名字随意,这里后边使用clangd插件,就命名为clang

1.2 插件安装

  • CMake
  • CMake Tools
  • clangd

    此插件安装会下载clangd服务,如果下载失败,请手动下载,并将其bin目录配置到环境变量中:
    下载地址:
    https://github.com/clangd/clangd/releases
    下载最新版本的,例如:

    或者使用之前编译器安装章节安装的clang编译器中自带的也可以,里边有clangd服务程序,可以直接使用clang编译器或者使用它的clangd.exe和gcc编译器。
    设置clangd 服务:

2. 工程创建

2.1 设置cmake路径

设置之前安装的cmake路径

2.2 编译器选择

ctrl + shift + p

扫描后选择之前安装的mingw 编译器

2.3 工程创建

创建工程结构如下:

2.4 工程实现

2.4.1 项目配置

settings.json :

复制代码
{
    "cmake.generator": "Ninja", // 或 "MinGW Makefiles" 等
    "clangd.arguments": [
        "--compile-commands-dir=${workspaceFolder}/build"
    ]
}

此配置是指定生成的compile_command.json文件路径, 用于clangd插件代码分析,提供代码跳转等, 生成工具选择使用Ninja 或者 MinGW Makefiles,但是make不支持c++ modules, 使用modules的话使用ninja, ninja安装参考之前环境安装部分。

Cmakelist.txt :

复制代码
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_EXTENSIONS ON)

set(TARGET cpp_template)

# 生成 compile_command.json
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)


############## 三方库配置 #############################################

############### 项目配置 ##############################################
# 头文件
include_directories(${CMAKE_SOURCE_DIR}/include)

# 源文件
file(GLOB SRC_FILES
    ${CMAKE_SOURCE_DIR}/src/*.cpp
)

# 创建主程序
add_executable(${TARGET} src/main.cpp)

添加如上命令,生成clanad所需要的compile_command.json文件

2.5 代码实现

使用c++ modules 就不需要头文件了,但是需要申明模块和导出文件:

如:

main.cpp

复制代码
#include <iostream>

int main() {
    std::cout << "hello";
    return 0;
}

项目运行点击左下编译或者执行即可:

测试结果:

相关推荐
ShineWinsu4 小时前
对于Qt:QCheckBox常见属性的详细解析
c++·qt·面试·笔试·gui·qcheckbox·多选框
AI的探索之旅4 小时前
97 个 OpenCV 实例(三十七):二维码识别,一张图四个码的陷阱
c++·opencv·计算机视觉
UIU1145 小时前
P16237 [蓝桥杯 2026 省 B] 应急布线
数据结构·c++·算法·蓝桥杯
raindayinrain5 小时前
c++设计模式
开发语言·c++·设计模式
旖旎夜光5 小时前
LeetCode 315: 算右侧小于当前元素的个数(归并排序) —— 题解
c++·学习·算法·leetcode·排序算法
D e re k ZH5 小时前
保序回归:从 PAVA 到可并堆的单调约束优化
c++·算法·数据挖掘·回归·kotlin
青少儿编程课堂5 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:字典树前缀树与单词检索统计
c++·python·算法·bfs·信息学竞赛
octopus_c6 小时前
C++ 运算符重载详解 && 日期类的实现
开发语言·c++
青少儿编程课堂6 小时前
2026蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:堆排序与优先队列解析
c++·python·算法·bfs·信息学竞赛
Eiceblue6 小时前
用 Python 给 Word 文档加水印:文字、图片与批量处理
开发语言·vscode·python·word