vs code + clangd + cmake + ninja 踩坑日记

2023-09-14 22:11:05 浏览数 (1)

clangd

clangd 是一个能够提供代码补全、智能提示、跳转等功能的c 语言服务器,相比vs code 带的c/c 插件功能更加强大

vs code 上配置clangd需要先下载clangd插件, 而后生成compile_commands.json文件即可避免clangd插件报错:“找不到头文件”

compile_commands.json

compile_commands.jsonclangd等工具用来提高代码跳转、补全功能的文件,在不存在compile_commands.json时,clangd会在分析自定义头文件时报错。对于c 项目,可以采用cmake 或make的方式来构建项目,而cmake和makefile均有对应的生成compile_commands.json文件的方法。

cmake

cmake 是可以一个跨平台的编译工具,可以生成makefile或者build.ninja文件,用于编译c 项目。

可以通过如下命令来生成“compile_commands.json”

代码语言:text复制
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=True ..

cmake cache

cmake在编译时会生成缓存文件,避免修改部分文件后需要重新编译整个项目。但也是由于缓存的存在,导致在修改CMakeLists.txt后,重新cmake 并不会重新编译项目。因此,可以在修改CMakeLists.txt文件后,删除CMakeCache.txt文件,强制cmake重新编译项目。

ninja

ninja与make的作用相同,但相对于历史悠久的make来说,ninja能够更加快速地完成整个项目的编译(大概只需要make 1/4 的时间)。而cmake可以通过简单的配置来生成ninja构建所需要的文件。

代码语言:text复制
//在build目录下
cmake .. -G "Ninja"

0 人点赞