You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

clangd结合CMock使用时索引Mock头文件而非实际库头文件的问题求助

clangd结合CMock使用时索引Mock头文件而非实际库头文件的问题求助

各位好,我目前在做一个基于Infineon TriCore MCU的嵌入式项目,遇到了clangd索引方面的麻烦,想请教大家有没有更好的解决办法。

先说说我的项目背景:

  • 项目的官方认证编译器TriCore‑GCC及其二进制库只能在Windows上运行,但我日常开发主要用Linux环境
  • 为了在本地快速做语法检查和单元测试,我用主机的GCC编译仅包含应用层的代码,同时用CMock生成mock文件,这样测试构建就不需要依赖厂商提供的库文件
  • 构建后会生成compile_commands.json,其中的条目大概是这样的(已简化):
    { "file": "core1/src/main.c", "directory": ".../build/tests/core1", "command": "/usr/bin/cc -DTESTING -Icore1/src -Itests/mocks <-- generated mocks -Itests/mocks/core1/libs/ -Itests/mocks/..." }
    

现在遇到的问题是:clangd会优先索引mock目录下的头文件,而不是实际的库头文件。比如我用跳转定义功能时,会跳到mock/xy.h,而不是我想要的core1/xy.h。

我目前能想到的唯一办法是在项目根目录创建一个.clangd文件,通过路径匹配来为每个core定义正确的包含路径,但我不确定这样做会不会导致clangd无法正常索引整个代码库。

有没有哪位朋友遇到过类似的问题,或者有更优的解决方案?感谢大家的建议!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 13:14:39