OpenFOAM-生成compile_commands.json文件
创建时间: 2024-09-11 21:23:42
摘要: 本文介绍在OpenFOAM项目中基于bear生成compile_commands.json文件的通用方法。
背景介绍
为了提升OpenFOAM开发效率,开发人员通常会借助开发工具进行代码提示、快速跳转、重构等。 OpenFOAM本质上是C++代码,目前使用较多的开发工具有VSCode、CLion、Vim等。 这些C++开发工具背后都会调用C++语言服务器(language server)根据一定规则来解析所依赖的头文件、源文件, 形成中间缓存文件以供开发过程中快速索引。
常见的C++语言服务器有:
clangd
Microsoft C++ Extension for VS Code
ccls
它们的共同点是都支持compile_commands.json文件作为编译规则解析的数据库
(虽然MS C++插件默认使用c_cpp_properties.json文件,但是也支持compile_commands.json)。
因此如何生成这个json数据库文件就成了这些开发工具能否顺利辅助开发的关键。
开发思路简介
wmake底层调用的是make,而bear可以对make进行包装调用,捕获编译命令,
从而生成compile_commands.json,因此可以考虑对wmake改造,
即将make调用改为bear make(for bear=2.*)或bear -- make(for bear=3.*)。
这也是本项目脚本的主要操作,即通过拷贝一个wmake为wmake_with_bear,
然后作相应修改。另外创建一个wmake_with_bear的别名为bwmake,以方便调用。
最终在OpenFOAM项目下,只需要调用bwmake就能得到该项目对应的compile_commands.json。
项目地址
已测试:
OpenFOAM-v2406 on Ubuntu-24.04 with bear 3.1.3
OpenFOAM-v2012 on Ubuntu-20.04 with bear 2.4.3
OpenFOAM-v2012 on Ubuntu-16.04 with bear 2.1.5
OpenFOAM-11 on Ubuntu-20.04 with bear 2.4.3
OpenFOAM-6 on Ubuntu-18.04 with bear 2.3.11