目录

Happy FOAMing on VScode

badge

使用现代化的编辑器vscode进行OpenFOAM编程的配置,大大提升编程体验。

说明

  • 首先搜索扩展c/c++安装微软的的C++扩展

  • 打开工作文件夹,即你的OpenFOAM求解器存放的文件夹,按住shift+ctrl+p开启命令框,输入c/c++:conf后选择如图的第二条命令,生成.vscode/c_cpp_properties.json

  • 打开Make/options,可以看到所有需要包含的头文件,以-I开头

值得注意的是,其中的$(LIB_SRC)所指的地址就是OpenFOAM源代码路径。

如果你不知道这个路径,终端下执行

1
2
src
pwd

打印出的内容就是$LIB_SRC

值得注意的是,Make/options中的头文件并不完整,还需要加入以下两个头文件:

1
2
/opt/OpenFOAM/OpenFOAM-v1912/USERNAME/src/OpenFOAM/lnInclude
/opt/OpenFOAM/OpenFOAM-v1912/USERNAME/src/OSspecific/POSIX/lnInclude

请自行搜索以上两个头文件在你的设备中的位置。

  • 接着把完整路径放到C++配置文件的includePath中:

注意每条路径用" "括起来,行末加,(最后一行路径除外)

  • 接下来还有一些小工作要做,先wmake求解器,你会看到下面的输出:

第一个参数g++说明wmake使用g++编译器,因此将g++的路径替换compilerPath中的内容,不知道g++路径?终端里which g++得到。后面-std = c++11 -m64 ... -ftemplate-depth-100compilerArgs, 大部分是规定了编译过程错误信息输出以及优化信息,其中,-W开头的参数规定了编译过程中错误信息如何输出,对于我们使用编辑器没有作用,-std = c++ 11 -m64 -O3这几个参数则规定了编译使用的C++标准和优化信息,可以保留,而 以-D参数开头的是一些宏定义,他们有的规定了所使用的精度等级,这些定义十分重要,如果不加会引起类型错误。最后-ftemplate-depth-100规定了实例化搜寻深度,默认值为900,所以如果不加应该也没有问题,但是对性能的影响尚不清楚。 如果你觉得太麻烦,你可以将他们全都加到compilerArgs

  • 最终效果:

自动补全,代码提示、跳转都正常


NOTE

  • 由于OpenFOAM”特殊“的编程风格,常在头文件中写代码段而不是类声明等常规写法,会导致报错,比如头文件中runTimeundefined错误提示和Infoambigous提示,目前没有解决方法。如果你不想看到这些错误提示,可以设置忽略,具体方法在网上很容易找到

  • 最近有个叫Volker Weissmann 的哥们在github上发起一个pull request, 介绍了一个叫做ccls的东西,似乎能够解决上面的问题,不过我还没尝试。pull request

  • OpenFOAM的.C .H后缀可能使得Vscode识别语言类型错误,可以在.vscode下创建settings.json设置类型绑定,具体方法在网上很容易找到

  • 由于C++扩展进行intellisense会占用较大的存储空间,每打开一个工程,就会相应生成一个100Mb左右的预编译文件,但是对于intellisense没有作用。可以定期清理~/.cache/vscode-cpptools/ipch下的缓存文件来释放空间,或者在设置中把intellisense cache size设为0禁用。

  • 如果是wsl用户,可以使用wsl插件在vscode中调用bash,上述操作均在vscode连接Ubuntu后进行

  • 如果遇到问题请点我发起issue


LICENSE

本内容基于CC-BY-4.0 协议,转载请注明出处