目录
Make文件下主要包含files文件和options文件
- files 按行存储所有源代码文件名,最后一行用来指定目标代码
EXE
的名称和存放位置 - options 设定查找头文件和库的路径
EXE_INC
和需要链接的库EXE_LIBS
1.files文件
makeMultiphaseTurbulenceModel.C
LIB = $(FOAM_USER_LIBBIN)/libturbulenceMultiphaseOlaFlowModels
- 其中,通过关键字
$(FOAM_LIBBIN)
和libturbulenceMultiphaseOlaFlowModels
分别指定目标代码的存放位置和名称,标准路径$(FOAM_LIBBIN)
亦可替换为用户路径$(FOAM_USER_LIBBIN)
。
2.options文件
EXE_INC = \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/incompressible/lnInclude \
-I$(LIB_SRC)/transportModels/incompressible/lnInclude \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude
LIB_LIBS = \
-lturbulenceModels \
-lincompressibleTurbulenceModels \
-lincompressibleTransportModels \
-lfiniteVolume \
-lmeshTools
- 头文件存放路径使用
-I
标识符; - 库文件路径使用
-L
标识符指定,库名称使用-l
标识符指定,并且去掉lib
前缀以及.so
后缀。 - 除了最后一行外,每行代码最后都需要使用
\
。 - 当库文件不在默认路径
$FOAM_LIBBIN
下才需要指定库文件路径。
3. 编译库
和编译求解器不同,当编译库的时候,Make 文件夹内需要做一些更改:
- files 文件中,最后一行的EXE = 需要替换为 LIB =,且$FOAM_APPBIN 需要更改为$FOAM_LIBBIN(或者$FOAM_USER_LIBBIN);
- options 文件中,EXE_LIBS 需要替换为 LIB_LIBS,用来指定编译库的时候需要 链接的库;
- 当执行 wmake 的时候,他会自动的创建一个 lnInclude 的文件夹,用于包含必要的文件。
4.如何在求解器里调用编好的库
修改Make/options文件
- 在EXE_INC中添加,-I +库的路径(在包含Make文件的路径下pwd复制过来) + /lnInclude \
- 在EXE_LIB中添加, -L + $(FOAM_LIBBIN)(或者$(FOAM_USER_LIBBIN))+ / + files中库名.so (或者是编译成功后的lib后面的名字复制即可) \
5.算例使用
在system/controdict文件夹下添加下面即可
libs
(
"libturbulenceMultiphaseOlaFlowModels.so"
);