#201922
OpenFOAM 使用 wmake 来编译库和执行程序。wmake 需要 Make 文件夹以及其下的 files 和 options 两个文件。
包含头文件
对于编译来说,首先是需要一些头文件,怎么查找头文件呢?OpenFOAM 一般是按照下面的顺序来的:
- 文件夹
$WM_PROJECT_DIR/src/OpenFOAM/lnInclude - 当前文件夹的
lnInclude - 当前文件夹
- 由
$WM_PROJECT_DIR/wmake/rules/$WM_ARCH/指定平台依赖的包 - 其他文件夹由
Make/options文件的-I指定,其格式为
EXE_INC = \
-I \
-I \
-I
链接库文件
由于很多共享的库是可以重用的,因此,没有必要全部都写到可执行文件 (求解器) 中,就需要将求解器与共享的库建立连接,以便使用,共享库的查找路径为:
- 文件夹
$FOAM_LIBBIN -
$WM_DIR/rules/$WM_ARCH指定的平台依赖的库 - 其他由
Make/options文件指定的文件夹
库的实际文件必须由 -l 来指定,并且将库文件的名字前面的 lib 和后面的 .so 删除,例如:libA.so 就要写成 -lA。wmake 会自动加载以下的库
$FOAM_LIBBIN/libOpenFOAM.so- 由
$WM_DIR/rules/$WM_ARCH指定的平台依赖的库 - 由
Make/options指定的库
Make/options 文件指定库的文件夹和库,使用以下格式
EXE_LIBS = \
-L<库文件夹1> \
-L<库文件夹2> \
-l<库文件1> \
-l<库文件2>
总的来说,就是库的文件夹用 -L,库文件用 -l。
需编译的源文件
编译器需要一此 .C 文件来进行编译。.C 文件通常列于 Make/files 文件,它还包含了可执行文件的路径和名称,须用 EXE = 来指定。标准的方式建议使用 .C 文件的名称。OpenFOAM 提供了两种路径供大家选择:一种是发布的标准执行文件,位于 $FOAM_APPBIN;一种是供用户使用的,位于 $FOAM_USER_APPBIN$。
Make/files 文件的格式为
aFoam.C // .C 文件
EXE = $(FOAM_USER_APPBIN)/aFoam // 可执行文件的路径和文件名
如果需要编译形成库文件,则使用
bFoam.C // .C 文件
LIB = $(FOAM_USER_LIBBIN)/libbFoam // 库文件的路径和文件名
形成的库文件为 libbFoam.so,编译库文件,则需要使用命令
wmake libso