clangd
clangd 是一个能够提供代码补全、智能提示、跳转等功能的c 语言服务器,相比vs code 带的c/c 插件功能更加强大。
在vs code 上配置clangd需要先下载clangd插件, 而后生成compile_commands.json文件即可避免clangd插件报错:“找不到头文件”
compile_commands.json
compile_commands.json是clangd等工具用来提高代码跳转、补全功能的文件,在不存在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"