Make文件夹是OpenFOAM特有的,里面主要包含两个文件files
和options
:
files
用来指定OpenFOAM顺序进行编译的文件名称以及路径;options
用来指定OpenFOAM需要调用的外挂库的路径以及名称;
files文件
newApp.C
EXE = $(FOAM_APPBIN)/newApp
- Make/files 中必须指定完整的以.C 为后缀的文件列表。
- Make/files 文件需要指定所编译程序的全路径以及名字(用
*EXE =
* 来指定)。标准做法是使用求解器的名字。 - OpenFOAM 提供了两种可选的路径,一个是标准的路径,编译好的求解器存储在
$FOAM_APPBIN
中;另一个是用户自己的路径存储在$FOAM_USER_APPBIN
。
options文件
EXE_INC = \
//头文件存放路径
-I<directoryPath1> \
-I<directoryPath2> \
... \
-I<directoryPathN>
LIB_LIBS = \
//链接库文件路径
-L<libraryPath1> \
//链接库名称
-l<library1> \
-l<library2> \
... \
-l<libraryN>
几点注意事项:
- 头文件存放路径使用
-I
标识符;库文件路径使用-L
标识符指定,库名称使用-l
标识符指定,并且去掉lib
前缀以及.so
后缀。 - 除了最后一行外,每行代码最后都需要使用
\
。 - 当库文件不在默认路径
$FOAM_LIBBIN
下才需要指定库文件路径。 - 文件夹路径必须正确,否则进行编译时会因为找不到头文件而报错。
编译指令: wmake
wmake <optionalArguements> <optionalDirectory>
<optionalDirectory>
是指被编译程序的文件路径。当程序在自己的路径下进行编译时,该项可以省略;- 一般不需要指定参数
<optionalArguements>
的值,但是在编译类型为 库 等其他类型而不是可执行目标代码的情况下,需要对其进行指定:
lib 静态链接库
libso 动态链接库
libo 静态链接目标文件
jar JAVA存档文件
exe 可执行文件(默认)
编译库
和编译求解器不同,当编译库的时候,Make 文件夹内需要做一些更改:
files
文件中,EXE =
需要替换为LIB =
,且$FOAM_APPBIN
需要更改为$FOAM_LIBBIN
(或者$FOAM_USER_LIBBIN
);options
文件中,EXE_LIBS
需要替换为LIB_LIBS
,用来指定编译库的时候需要 链接的库;
当执行 wmake 的时候,他会自动的创建一个 lnInclude
的文件夹,用于包含必要的文件。
移除依赖包文件: wclean
在编译的过程中,wmake
会创建一个依赖包文件,扩展名为.deb
(如:newApp.dep
)。并在 Make/$WM_OPTIONS
中产生一系列文件。
此后,如果需要修改头文件或者链接库的代码,需要运行 wclean
来删除依赖包:
wclean <optionalArguements> <optionalDirectory>
跟 wmake
相同的是,<optionalDirectory>
是被编译程序的文件路径。一般来说,程序在自己的路径下来运行 wclean
,可以省略<optionalDirectory>
。
若对库执行 wclean
,文件夹 lnInclude
也会被删除。
参考: