当前位置: 首页 > news >正文

gen_compile_commands.sh

下面是为你的项目结构 量身定制 的完整脚本:
它会扫描所有 .cpp 文件,添加正确的 -I 包含目录,输出符合 clangd 要求的 compile_commands.json 文件。


✅ 请将以下内容保存为 gen_compile_commands.sh

#!/bin/bash# 项目根目录
PROJECT_DIR=$(pwd)# 所有的头文件包含路径(根据你的 tree.txt 自动生成)
INCLUDES="-IAlarm/include \
-ICondition/include \
-IControl/include \
-ICore/include \
-IDataLog/include \
-IIO/include \
-IInterlock/include \
-IRecipe/include \
-IRemoteAccess/include \
-ISetup/include"# 其他通用编译选项(根据你的 make.txt 提取)
CXXFLAGS="-Wall -Wextra -g -O0 -DDEBUG -fPIC -std=c++98"# 开始生成 JSON 文件
echo "[" > compile_commands.json# 标记是否是第一个条目(用于避免最后多逗号)
first=1# 遍历所有 .cpp 文件
find . -name "*.cpp" | while read file; do# 添加逗号(跳过第一个)if [ $first -eq 0 ]; thenecho "," >> compile_commands.jsonfifirst=0echo "  {" >> compile_commands.jsonecho "    \"directory\": \"$PROJECT_DIR\"," >> compile_commands.jsonecho "    \"command\": \"g++ $CXXFLAGS $INCLUDES -c $file\"," >> compile_commands.jsonecho "    \"file\": \"$file\"" >> compile_commands.jsonecho -n "  }" >> compile_commands.json
done# 结束 JSON
echo "" >> compile_commands.json
echo "]" >> compile_commands.jsonecho "✅ compile_commands.json 生成完毕,共包含 $(grep -c 'file' compile_commands.json) 个源文件。"

✅ 使用方法

  1. 将脚本保存为:

    gen_compile_commands.sh
    
  2. 加可执行权限:

    chmod +x gen_compile_commands.sh
    
  3. 在项目根目录运行它:

    ./gen_compile_commands.sh
    
  4. 会在当前目录生成:

    ./compile_commands.json
    

✅ clangd 就绪!

打开 Neovim,确认 clangd 可以正确跳转:

  • gd 跳转定义
  • gr 查找引用
  • K 查看文档
  • <C-Space> 补全提示

如需要,我还可以帮你配置 .clangd.clang-format 文件,是否需要?

http://www.dtcms.com/a/308146.html

相关文章:

  • elk部署加日志收集
  • 网络爬虫(python)入门
  • webpack-babel
  • 开发避坑短篇(11):Oracle DATE(7)到MySQL时间类型精度冲突解决方案
  • uniapp x swiper/image组件mode=“aspectFit“ 图片有的闪现后黑屏
  • Vue多请求并行处理实战指南
  • 【qiankun】基于vite的qiankun微前端框架下,子应用的静态资源无法加载的问题
  • [硬件电路-111]:滤波的分类:模拟滤波与数字滤波; 无源滤波与有源滤波;低通、带通、带阻、高通滤波;时域滤波与频域滤波;低价滤波与高阶滤波。
  • 2025做美业还有前景吗?博弈美业系统带来美业市场分析
  • rustdesk 1.4.1版本全解析:新增功能、性能优化与多平台支持详解
  • 【机器学习】KNN算法与模型评估调优
  • 深度学习批量矩阵乘法实战解析:torch.bmm
  • 【科普】在STM32中有哪些定时器?
  • 【Golang】用官方rate包构造简单IP限流器
  • 【STM32】HAL库中的实现(二):串口(USART)/看门狗(IWDG/WWDG)/定时器(TIM)
  • 三格——环网式CAN光纤中继器进行光纤冗余环网组网测试
  • 工业绝缘监测仪:保障工业电气安全的关键防线
  • C# 枚举器和迭代器(常见迭代器模式)
  • 26考研|数学分析:重积分
  • ubuntu24.04环境下树莓派Pico C/C++ SDK开发环境折腾记录
  • 设计模式:命令模式 Command
  • AI驱动下的数据新基建:腾讯游戏数据资产治理与湖仓架构革新
  • 【数据结构入门】时间、空间复杂度的计算
  • 装修风格怎么选
  • LoggerFactory(日志门面框架核心工厂类)详解
  • 【普中STM32精灵开发攻略】--第 1 章 如何使用本攻略
  • MySQL 查询中的 UNION、UNION ALL 和 DISTINCT
  • 用Python绘制SM2国密算法椭圆曲线:一场数学与视觉的盛宴
  • AI赋能操作系统:通往智能运维的未来
  • PyTorch L2范数详解与应用