上一篇中我们介绍了如何生成cgns的动态链接库,这篇我们将介绍一下静态链接库的编译和使用。
我们同样的分为三部分进行介绍:
第一部分 1.安装文件准备
第二部分 2.cgns静态链接库编译
第三部分 3. cgns静态链接库的使用
1. 安装文件准备
与上一篇cgns动态链接库编译所需的软件和代码相同,具体情况参见下面的链接https://blog.csdn.net/LDDHEU/article/details/133563784?spm=1001.2014.3001.5501https://blog.csdn.net/LDDHEU/article/details/133563784?spm=1001.2014.3001.5501
2.cgns静态链接库编译
这一节中HDF5和CMake的安装也与动态链接库的安装相同。这里我们直接从CGNS的编译说起。
2.1 CMake配置源码
a. 解压CGNS-4.3.0.zip后可以看到一堆源码,在包含src和CMakeLists.txt的目录下创建build文件夹
b. 打开cmake-gui,
在where is the source code选包含src和CMakeLists.txt的目录,我的是 C:\Users\Li Dongdong\Desktop\CGNS\cgnsfortran\Software for CGNS library compilation\CGNS-4.3.0\CGNS-4.3.0,
在where to build the binaries选刚创建的build文件夹:
C:\Users\Li Dongdong\Desktop\CGNS\cgnsfortran\Software for CGNS library compilation\CGNS-4.3.0\CGNS-4.3.0\build
单击Configure,选择VS 17 2022编译器,x64,如图2所示。
c. 上一步点击Finish后,等待一会会cmake界面中间会出现红色填充的内容,去掉CGNS_BUILD_SHARED的勾选,勾选CGNS_ENABLE_64BIT、CGNS_ENABLE_FORTRAN、CGNS_ENABLE_HDF5、CGNS_USE_SHARED,注意一下CMAKE_INSTALL_PREFIX对应的Value,这里是最终编译出的cgns的位置,如图3所示,这里为了避免破坏动态链接库,我们将安装位置改为了C:\cgns.
d. 依次单击Configure, Generate,没有意外的话会看到下面的界面,Configure done和Generate done。这时会看到创建的build文件夹下出现了很多内容。
2.2 VS 编译成库
a. 以管理员身份运行VS2022,打开built文件夹下的cgns.sln(点击右侧打开项目或解决方案),此时直接重新生成解决方案即可成功,如图5所示,而后右键INSTALL->仅用于项目->进重新生成,成功后会在cmake_install_prefix指定的目录(我们在上面默认的是C:\cgns)下出现bin、include、lib三个文件夹。
b. lib和include文件整理:在cgns文件目录下创建一个cgnsdev的文件(可以用其他名字也可以创建在其他位置),将cgns目录下lib文件夹下的cgns.lib文件及include文件下的cgns.mod和cgnstypes_f03.h复制到新创建的cgnsdev文件下,将HDF5目录下lib文件夹下的(C:\Program Files\HDF_Group\HDF5\1.12.1\lib)libaec.lib、libhdf5.lib、libsz.lib、libzlib.lib也复制到cgnsdev文件下。最终cgnsdev文件下包含如图7所示的文件。
3 cgns动态链接库的使用
a.打开VS 2022创建一个新的Fortran项目,然后从cgns源码(C:\Users\Li Dongdong\Desktop\CGNS\cgnsfortran\Software for CGNS library compilation\CGNS-4.3.0\CGNS-4.3.0\src\Test_UserGuideCode\Fortran_code)里复制一个代码到创建的项目里。这里我们以write_grid_unst.F90为例(我这里直接复制了里面的代码,粘贴到新建的一个源项目里),如图8所示。
b. cgns库的链接。 在项目->属性->Fortran->General->Additional Include Directories中加入目录C:\cgns\cgnsdev,在项目->属性->Linker->General->Additional Library Directories中加入CGNS安装目录C:\cgns\cgnsdev,在项目->属性->Linker->Input->Additional Dependencies中加入cgns.lib libhdf5.lib libaec.lib libsz.lib libzlib.lib,在项目->属性->Fortran->Preprocessor->Preprocess Source File改为Yes (/fpp),具体如图9所示。
这里链接的文件是可以直接复制到其他位置的 ,只需要在使用时准确给定其路径就行,比如我们将整理的库文件复制到当前解决方案下,对应的路径改到当前目录下即可。
c. 代码的编译运行和网格文件检验:此时一切顺利的话,这段代码可以正常编译和运行了,运行结束后程序目录下会出现一个grid.cgns的网格文件,采用tecplot打开后可以看到图10所示的网格。
参考文献
这里主要参考了下面两篇文章的内容,尤其第二位大佬的分享内容,按照里面的内容很快搞定。
1 CGNS快速入门到实战(一):CGNS静态链接库编译_cgns编译_ahang_99的博客-CSDN博客
2 VS 2019+IVF2020 Fortran使用CGNS库_ivf2020安装包_圆滚滚啃橙狮的博客-CSDN博客