找回密码
 注册
查看: 9212|回复: 0

[转载]运用OpenFOAM编译器wmake编译自己的程序

[复制链接]
发表于 2009-5-13 06:30:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表