#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