|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本文将OpenFoam的编译系统介绍一下,并给出了如何在OpenFOAM下编译“hello world”程序。OpenFOAM用的编译器是gcc,他并不是直接运用该编译器,而是将该编译器进行了包装,也就是wmake。OpenFOAM中的头文件通常为H结尾,而代码文件是以C为扩展名,应当注意,这里的C为大写的,如果写成小写,wmake会出现编译错误,尽管你编写的代码没有错误。
运用wmake编译程序,程序所在的文件夹结构必须为如下形式
|—newApp
|-newApp.C
|-otherHeader.H
|-Make
|-files
|-options
Make所在的文件夹中放有主程序,和在主程序用到的所有头文件,这里面的代码文件和头文件名字任意。Make文件夹里面有两个文件files和options,这两个文件的名字不能改变。
files文件主要干两件事
(1)指定哪些文件需要编译,这里的文件是代码文件,也就是.C文件,而不包括.H文件
(2)指定你要编译的类型,是编译成库,还是编译成可执行文件,以及编译成的库文件或者可执行文件的名字。
下面是icoFoam的Make文件夹下的files文件的内容
icoFoam.C
EXE = $(FOAM_APPBIN)/icoFoam
要编译的代码文件直接将名字写到里面就行了,如果有多个代码文件,直接一个一个列在上面就行了。
下面为编译程序类型EXE=,说明要编译成可执行文件,等号右面为编译后的文件放在什么地方。这一行也可以不写,他会将编译的可执行文件放到当前文件夹,名字为OpenFOAM.out.
如果你要编译成库的话请采用”“LIB= ...”等号后面放编译的库文件所在的目录,一般编译库文件命名为lib...,这是一个习惯,而非规定。
options文件也是干两件事
(1)指定编译的头文件所在的目录,如果说所用的头文件在当前文件夹或者标准C++的头文件,无需指定。
(2)指定编译当前程序所用到的库。
下面为icoFoam下的options文件的内容
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude
EXE_LIBS = \
-lfiniteVolume
EXE_INC=用于所运用到的头文件所在的目录,EXE_LIB用来指定所有到的库。注意这里的库为OpenFOAM中的库或者你自己写的库,C++的标准库无需在这添加。
因此如果你不使用OpenFOAM中的库,而是自己独立编写C++程序,并且所有的头文件都在当前的根目录,options里无需指定任何东西。
下面是一个简单的“Hello world”c++程序,按照我说的方法试一试?
第1步:建立一个目录,用于编译当前的Hello world程序?
下面为当根目录建立一个hello的文件夹,并进入hello文件夹。
cd //进入根目录
mkdir hello //建立文件夹,名为hello
cd hello //进入hello
第2步: 建立Make文件夹,并进入Make建立files和options文件
mkdir Make //建立Make文件夹
cd Make //进入Make
touch files //创建files文件
touch options //创建options文件
cd.. //退出Make文件夹
第3步:建立程序文件hello.C, 打开hello.C进行编程序
touch hello.C //创建hello.C
kate hello.C //打开hello.C
输入如下代码
#include"iostream"
using namespace std ;
int main ()
{
cout<<"hello world"<<endl;
}
关闭kate
第4步:在files指定编译文件,hello.C
cd Make //进入Make
kate files //打开files
将下面的东西输入进去
hello.C
EXE=hello
关闭kate
第5步:程序编译
cd .. //退出Make文件夹
wmake //编译程序
第6步:看结果
./hello
你做成功了吗?
转自OpenFOAM研究:http://blog.sina.com.cn/openfoamresearch |
|