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
相关产品推荐
相关产品推荐

