使用 VS Code + Language Server Protocol 更好地阅读以及编写 OpenFOAM 代码。
本文的操作需要 Linux 环境,博主是在 WIN10 下的 Ubuntu WSL 试验的。
第 1 步:在 WIN10 下安装 VS code,然后安装 Remote - WSL 插件。
第 2 步:在 VS code 的 WSL 端安装 ccls 插件。
第 3 步:在 Ubuntu 下安装 bear:sudo apt install bear
,安装 ccls:sudo apt install ccls
。
第 4 步:修改 OpenFOAM/wmake/wmake
,在 checkEnv
的这一行下边添加:
------------------------------------------------------------------------------ |
第 5 步:重新编译 OpenFOAM,在此过程中,bear 会监控整个编译过程,生成代码之间的依赖关系。我的测试下,生成了 ~/OpenFOAM/OpenFOAM-7/platforms/linux64GccDPInt32Opt/compile_commands.json
,大概 4MB,这是下列步骤成功的关键。
第 6 步:点击下载 setupVScodeFOAM。Ubuntu 下,激活 OpenFOAM 后,在任意目录执行 setupVScodeFOAM
生成 VS code 配置文件(.vscode/settings.json)或者 setupVScodeFOAM --generate-workspace
生成工作区。
第 7 步:在 VS code 中,打开刚刚创建的 .vscode 所在的文件夹,或者刚刚创建的工作区。此时你应该可以看到,ccls 正在后台运行,尝试理解你所有的代码,并占用了你所有的 CPU。
第 8 步:等上一步结束,就可以愉快地开始阅读或者编写代码了,尽情享用比较精确的 Go to definition 功能。
不过功能也不完美,ccls对代码的理解也不够透彻。并且OpenFOAM里边很多同名函数,跳转的时候,有时候就瞎跳转,随机扔给你一个(甚至参数个数都不同的)同名函数。。。
后来又尝试了一下 ccls 的替代品 clangd。但是经过我的测试,对于 OpenFOAM 代码的理解能力而言,ccls 更胜一筹。
如果有人也想试一试,我简单提供一下方法。还是上边的硬件设备,WIN10+WSL Ubuntu。
在 Ubuntu 里安装 clangd,然后把上边生成的 compile_commands.json,放到 src 或者是底下的那些单独的库的文件夹里。
然后耐心等待 Ubuntu 建立索引就行了,就像上边的第 7 步一样。
参考资料: