【VSCODE】使用clangd与cmake进行c/c++开发

1. 安装clangd

在vscode扩展商店中搜索clangd,并下载如图扩展
clangd扩展
注意:clangd智能提示与平常使用的C/C++插件的智能提示会产生冲突,需要在设置中关闭其一。这里我们选择关闭C/C++插件的智能提示

禁用C/C++智能提示

  1. 点击左下角齿轮图标,打开设置
  2. 搜索C_Cpp: Intelli Sense Engine,选择disabled

此时的clangd智能提示就可以使用了。clangd默认开启header-insertion,也就是当你使用一个未被引入的头文件中的成员时,clangd会在你使用自动补全后自动将其引入。如果你习惯使用万能头,那么自动引入头文件的功能最好关闭。

禁用clangd自动引用头文件

  1. 点击左下角齿轮图标,打开设置
  2. 搜索Clangd: Arguments
  3. 选择添加项,添加--header-insertion=never
  4. ctrl+shift+p,输入clangd: Restart language server以重启clangd来应用更改

之后,我们需要指定clangd使用的编译工具

指定clangd使用的编译工具

  1. 打开设置并搜索Clangd: Arguments
  2. 选择添加项,添加--query-driver=C:/path/to/your/g*.exe

注意这里的路径要写自己的mingw的bin文件夹目录

最后,我们按照标准指定clangd的编译命令文件路径

指定clangd的编译命令文件路径

  1. 打开设置并搜索Clangd: Arguments
  2. 选择添加项,添加--compile-commands-dir=${workspaceFolder}/build

最后的效果应当是这样的
clangd参数
上述操作等价于填入settings.json文件的代码:

"clangd.path": "C:/path/to/your/clangd.exe",
"clangd.arguments": [
    "--query-driver=C:/path/to/your/g*.exe",
    "--compile-commands-dir=${workspaceFolder}/build",
    "--header-insertion=never"
]

2. 安装cmake

首先打开vscode扩展商店,搜索cmake,并安装如图两个扩展
cmake扩展
除此之外,我们还要前往官网下载cmake本体,选择适合自己的版本下载并安装。安装成功后,记好自己的cmake.exe文件路径,或者直接将bin目录添加至环境变量也可以

完成以后,需要让cmake扩展知道你的cmake本体文件的位置。

设置Cmake Path

  1. 打开设置,搜索Cmake: Cmake Path
  2. 将包含cmake.exe的完整路径填入其中

完成后如图所示(安装路径不同,填入的内容也不一样):

设置cmake.exe路径
之后,我们要指定cmake生成器。由于我们使用mingw来编译C/C++文件,因此这里使用的是MinGW Makefiles

指定cmake生成器

  1. 打开设置,搜索Cmake: Generator
  2. 填入MinGW Makefiles(若为linux环境则使用Unix Makefiles

完成后如图所示
cmake生成器

3. 运行/调试项目

编写CMakeLists.txt文件

首先准备如下的项目结构:
项目结构

  • build:用于存放cmake的编译中间文件
  • include:用于存放自己写的头文件
  • src:用于存放自己写的源文件

要使用cmake来编译我们的项目,首先要编写CMakeLists.txt文件。我们先在项目文件夹下新建一个CMakeLists.txt文件
之后,向该文件内写入如下内容(可以自行学习cmake的语法等知识

cmake_minimum_required(VERSION 3.10.0)

project(project_name)

set(CMAKE_CXX_STANDARD 20)

include_directories(include)

aux_source_directory(./src CPP_FILES)

add_executable(
    main ${CPP_FILES}
)

添加工具包

然后,在vscode左侧找到CMake,并将自己的gcc添加至工具包中
添加工具包

测试代码

保存该文件,之后我们随便写一些测试代码:

A.h

class A {
public:
    void test();
};

A.cpp

#include "A.h"
#include <iostream>

void A::test() {
    std::cout << "Hello world!" << std::endl;    
}

main.cpp

#include "A.h"
	
int main() {

 	 A a;
	 a.test();

 	 return 0;
}

目录结构:
目录结构

点击vscode下方的小三角按钮运行,边上的小虫是debug按钮
注意:不以debug运行将会忽略断点
运行
程序完美运行:

运行结果

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值