CGNS快速入门到实战(一):CGNS静态链接库编译


笔者:陈远航
坐标:南京航空航天大学航空学院MAV527



前言

  近期,由于需要将CGNS格式加入到教研组自编CFD求解器DUBHE中,所以本人展开了对于CGNS的学习。CGNS快速入门到实战这一系列分成三篇文章展开叙述,具体有:

  · CGNS静态链接库编译(一)
  · VS配置调用CGNS静态链接库(二)
  · 编写CGNS文件及案例展示(三)

  大佬们的帖子帮了我很多,于是自己也想为之献一份力同时记录一下学习过程,边学边分享嘛。经过几个月的摸索,在百度、知乎、B站等上浏览了很多资料。为了使读者少走弯路,提高效率,笔者在这里推荐如下资源:

  1、CGNS的官方网站:“cgns.github.io“,官网里面有着详尽的资料,由于语言是英文,导致了众多读者不想仔细阅读(刚开始接触时,笔者也是这个心理)。但经过笔者一个月的学习,大部分能在网上找的资料都是从官网里面复制出去的,同时一手资源的精准性要二手资源高得多。

  2、中国专业IT社区:“CSDN“,相较于某度,这里的帖子准确性更高一些。更重要推荐它的原因是:可以下载到很多资源,比如后面要用到的及其难编译的CGNS库,在这里都可以下载得到。

  3、知乎迦非喵老哥的系列文章:“CGNS和hdf5编译链接相关文章链接整理“,大佬已经将文章编成系列,包括了CGNS的编译、配置和使用。帖子含金量很高,诚心推荐。

  最后,由于CGNS官网的资料数据太过庞大,不一定能够立即找到所需资源或者问题的答案,这个时候可以借助其他方法(百度、知乎、CSDN),但当问题得不到有效解决时,还是推荐回到CGNS官网寻求答案。


1. CGNS静态链接库编译

  好了,回到文章的中心,首先第一部分要讲一下CGNS库如何编译。胡言乱语一个题外话,库文件的产生:你手头有一代码,你想给别人使用,但你又不想别人看到你的代码,于是库就产生了,库是一堆二进制文件,根本无法看懂,同时又可以被调用。由于CGNS没有现成的库文件,所以需要我们自行编译。对于一个之前没有编译过文件的小白来说,这个过程还是相当痛苦的。(已经有库文件的大佬直接跳过这一部分即可)

1.1 文件准备

  想要正确的编译CGNS库文件,需要将铺垫工作做好,我们一共需要五个工具:VS、Cmake、CGNS源码、Tcl/Tk、HDF5。笔者对这个五个东西做一个简要的介绍和它们的基本功用。

  首先是CGNS的源码文件,巧妇难为无米之炊,源码是编译的基石。读者可以从Github上面下载(https://github.com/CGNS/CGNS/tree/v4.2.0),如图1.1.1所示。

在这里插入图片描述

图1.1.1

  然后是Tcl/ Tk,这是两个东西,我们直接下载ActiveTcl就行,它同时包含了Tcl和Tk。Tcl(tool command language):简单、开源、可用C语言实现新的命令。Tk (toolkit) 作为图形用户界面工具,用于创建和操作widgets(一个具有特殊外观和行为的GUI窗口组件),它实际上就是一种图形工具包,python里的图形工具包也是Tk。

  HDF5(Hierarchical Data Format)由美国伊利诺伊大学厄巴纳-香槟分校UIUC(University of Illinois at Urbana-Champaign)开发,是一种常见的跨平台数据储存文件,可以存储不同类型的图像和数码数据,并且可以在不同类型的机器上传输,同时还有统一处理这种文件格式的函数库。CGNS有两种存储结构:ADF、HDF5。以前是ADF,现在默认都是HDF5。需要注意CGNS只是一个规范,它使用ADF/HDF5存储数据。

  接着是VS(Visual Studio),相信很多读者对他不陌生,我们学习c语言时就是用它编译的。它是一个集成开发环境软件(IDE,Integrated Development Environment),随着 IDE 的发展,现在它们基本都不再局限支持某一种语言。比如 Visual Studio 现在也可以支持 Python、Fortran。

  最后一个工具是Cmake,它是一个跨平台的编译(Build)工具,可以用简单的语句来描述所有平台的编译过程。它可以将源码转换成VS可编译的项目解决文件,界面如图1.1.2所示。

在这里插入图片描述

图1.1.2

  编译的流程:①下载好CGNS源码;②安装好HDF5、ActiveTcl、VS;③Cmake配置源码;④VS编译成库。这里说明一下笔者使用的这五个工具的版本:CGNS(4.2.0)、HDF5(1.12.1)、ActiveTcl(8.6.11.1.0000)、VS(2017)、Cmake(3.20.1)。

  五个软件已经整理好放在网站上了,需要的自取。站内搜索“CGNS库编译需要的五个工具:VS、Cmake、CGNS源码、Tcl/Tk、HDF5”。

1.2 Cmake配置源码

  编译流程中的第一步和第二步都比较简单,篇幅原因这里就不再赘述,读者自行下载和安装。

  源码下载好之后,文件夹里面如下图内容,其中build文件夹由读者新建,里面是空文件。然后运行Cmake,分别输入源码文件夹的路径、build文件夹的路径,然后Configure,选择VS版本(2017),选择编译器版本(X64),如图1.2.1、1.2.2所示。

在这里插入图片描述

图1.2.1

在这里插入图片描述

图1.2.2

  Finish之后出现图1.2.3,然后勾选CGNS_BUILD_CGNSTOOLS,CGNS_ENALE_64BIT,CGNS_ENABLE_HDF5,CGNS_USE_SHARED。将CGNSTOOLS勾选之后,会生成CGNS工具,查看CGNS文件时需要用到,这里就一并勾选。CMAKE_INSTALL_PREFIX可以改变CGNS库的生成目录。

在这里插入图片描述

图1.2.3

  然后依次Configure、Generate。下面会提示Configure done和Generate done,如图1.2.4。打开build文件夹,已经生成了cgns.sln项目决解方案文件,这就说明Cmake已经成功配置源文件,如图1.2.5。

在这里插入图片描述

图1.2.4

在这里插入图片描述

图1.2.5

1.3 VS编译成库

  Cmake工作已经结束了,接下来进行VS编译工作。在WIN10系统下,需要以管理员身份运行,才可以正确编译安装,否则就会报错。首先以管理员身份运行VS,然后打开build文件夹下的cgns.sln项目解决文件,如图1.3.1所示。需要把模式改为Release,X64

在这里插入图片描述

图1.3.1

  依次生成–重新生成解决方案,下面会提示成功33个,跳过3个,如图1.3.2。然后再右侧解决方案管理器中找到INSTALL右键仅用于项目–仅重新生成,下面会提示成功1个,这就说明已经成功编译,如图1.3.3。

在这里插入图片描述

图1.3.2

在这里插入图片描述

图1.3.3

  在Cmake配置源文件的时候,我们更改过生成文件夹的路径,读者可以返回上面寻找,打开文件夹可以看到CGNS库文件已经成功创建。bin文件夹里面包含一系列CGNS工具,include包含头文件,lib包含库文件,share包含tcl文件,如图1.3.4、1.3.5、1.3.6、1.3.7、1.3.8。

在这里插入图片描述

图1.3.4

在这里插入图片描述

图1.3.5

在这里插入图片描述

图1.3.6

在这里插入图片描述

图1.3.7

在这里插入图片描述

图1.3.8

1.4 小结

  整个系列第一章节CGNS静态链接库的编译到这里就结束了,笔者采用静态链接库的原因是为了切合教研室自编CFD求解器DUBHE的需求,读者可以按照自己的需求选用动态链接库,从某种程度上说,动态链接库可以使软件体积更小,利于推广。
  本系列另外两篇文章,将会深入讨论CGNS文件是如何生成的,以及它的普适性案例。这是笔者第一次在CSDN发布文章,学识所限,有误之处,感谢雅正!同时欢迎更多的学者参与到讨论中。


参考文献

  1、《A User’s Guide to CGNS》

  2、《SIDS File Mapping Manual》


❤️希望对您有帮助,您的支持是我创作最大的动力!

  • 15
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值