HDF5编译安装

  • 以下所有命令均在“x64 Native Tools Command Prompt for VS 2019”命令行中执行

HDF5 (Hierarchical Data Format) 由美国伊利诺伊大学厄巴纳-香槟分校 UIUC (University of Illinois at Urbana-Champaign) 开发,是一种常见的跨平台数据储存文件,可以存储不同类型的图像和数码数据,并且可以在不同类型的机器上传输,同时还有统一处理这种文件格式的函数库。

1 编译前准备

下载hdf5

chcp 65001
cd D:\build
D:
rd /S /Q E:\library\hdf5

vcpkg depend-info hdf5

mkdir myhdfstuff
copy /y hdf5-1.14.3.tar.gz myhdfstuff
cd myhdfstuff
tar -xf hdf5-1.14.3.tar.gz

copy /y hdf5-1.14.3\config\cmake\scripts\CTestScript.cmake .
copy /y hdf5-1.14.3\config\cmake\scripts\HDF5config.cmake .
copy /y hdf5-1.14.3\config\cmake\scripts\HDF5options.cmake .

2 修改配置信息

修改myhdfstuff目录下的HDF5options.cmake,这里修改了以下节点(按需修改):
zlib和szip编译安装请看第4和第5章。

#############################################################################################
####      Only build static libraries       ####
#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DBUILD_SHARED_LIBS:BOOL=OFF")
####      Only build shared libraries       ####
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DONLY_SHARED_LIBS:BOOL=ON")
####      Add PIC option on linux/mac       ####
#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DCMAKE_ANSI_CFLAGS:STRING=-fPIC")

#############################################################################################
####      fortran enabled      ####
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_FORTRAN:BOOL=ON")
####      fortran disabled      ####
#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_FORTRAN:BOOL=OFF")

#############################################################################################

#############################################################################################
####      java enabled      ####
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_JAVA:BOOL=ON")
####      java disabled      ####
#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_JAVA:BOOL=OFF")

#############################################################################################
### change install prefix (default use INSTALLDIR value)
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DCMAKE_INSTALL_PREFIX:PATH=E:/library/hdf5")

#############################################################################################
####      ext libraries       ####

### ext libs from tgz
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING=TGZ -DTGZPATH:PATH=${CTEST_SCRIPT_DIRECTORY}")
### ext libs from git
#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING=GIT")
### ext libs on system
#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING=NO")
set(ENV{ZLIB_ROOT} "E:/library/zlib")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DZLIB_LIBRARY:FILEPATH=E:/library/zlib/lib/zlib.lib -DZLIB_INCLUDE_DIR:PATH=E:/library/zlib/include")
set(ENV{SZIP_ROOT} "E:/library/szip")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DSZIP_LIBRARY:FILEPATH=E:/library/szip/lib/szlib.lib -DSZIP_INCLUDE_DIR:PATH=E:/library/szip/include")

### disable using ext zlib
#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_Z_LIB_SUPPORT:BOOL=OFF")
### enable using ext szip
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_SZIP_SUPPORT:BOOL=ON")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_SZIP_ENCODING:BOOL=ON")

#############################################################################################
### enable parallel builds
if (DEFINED MPI)
  set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_PARALLEL:BOOL=ON")
  set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_CPP_LIB:BOOL=OFF")
  set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_JAVA:BOOL=ON")
  set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_THREADSAFE:BOOL=OFF")
endif()

2.1 设置FORTRAN环境

如果HDF5options.cmake没有启用FORTRAN跳过此步骤

因为启用了fortran,在开始编译之前还需要设置fortran环境。这里安装的是Intel fortran编译器。

#在开始之前运行fortran环境
"C:\Program Files (x86)\Intel\oneAPI\setvars.bat"
ifort /help

2.2 设置C文件编码

这一步是可选择是否设置

编辑hdf5-1.14.3\CMakeLists.txt,设置文件编码为utf-8,如果不设置在编译过程中会有很多警告。在project (HDF5 C)后面添加即可

add_compile_options("$<$:/utf-8>")

表示使用源文件采用UTF-8编码方式

3 编译安装

开始编译安装,根据你的环境选择一项ctest执行即开始编译安装,ctest是cmke中的模块。

rd /S /Q build
rd /S /Q hdf5.log

#On 32-bit Windows with Visual Studio 2022, execute:
ctest -S HDF5config.cmake,BUILD_GENERATOR=VS2022 -C Release -VV -O hdf5.log

#On 64-bit Windows with Visual Studio 2022, execute:
ctest -S HDF5config.cmake,BUILD_GENERATOR=VS202264 -C Release -VV -O hdf5.log

#On 32-bit Windows with Visual Studio 2019, execute:
ctest -S HDF5config.cmake,BUILD_GENERATOR=VS2019 -C Release -VV -O hdf5.log

#On 64-bit Windows with Visual Studio 2019, execute:
ctest -S HDF5config.cmake,BUILD_GENERATOR=VS201964 -C Release -VV -O hdf5.log

#On 32-bit Windows with Visual Studio 2017, execute:
ctest -S HDF5config.cmake,BUILD_GENERATOR=VS2017 -C Release -VV -O hdf5.log

#On 64-bit Windows with Visual Studio 2017, execute:
ctest -S HDF5config.cmake,BUILD_GENERATOR=VS201764 -C Release -VV -O hdf5.log

#On Linux and Mac, execute:
ctest -S HDF5config.cmake,BUILD_GENERATOR=Unix -C Release -VV -O hdf5.log

注意:ctest运行完成后即表示已经编译并且已安装。根据HDF5options.cmake中的CMAKE_INSTALL_PREFIX配置,hdf5已经安装至E:/library/hdf5,如果没有安装会在myhdfstuff中生成一个HDF5-1.14.x-win64.zip,解压至安装目录即可。

4 编译安装zlib

  • 以下所有命令均在“x64 Native Tools Command Prompt for VS 2019”命令行中执行

压缩算法

chcp 65001
cd D:\build
D:
rd /S /Q E:\library\zlib
rd /S /Q D:\build\zlib

#显示依赖的包
vcpkg depend-info zlib

git clone https://github.com/madler/zlib.git
cd zlib

vcpkg depend-info zlib

rd /S /Q build
cmake -G "NMake Makefiles" -Wno-dev -DCMAKE_BUILD_TYPE=Release -B build -S . ^
-DBUILD_SHARED_LIBS=ON ^
-DCMAKE_INSTALL_PREFIX:PATH="E:\library\zlib"

cmake --build build --config Release

cmake --install build --config Release

5 编译安装szip

  • 以下所有命令均在“x64 Native Tools Command Prompt for VS 2019”命令行中执行

libaec自带szip,所在没有使用,使用的是libaec中的szip

Szip是一个免费软件便携式通用无损压缩 程序。它具有高速和压缩,但对内存的要求很高 (最大 20MB)。

下载szip

chcp 65001
cd D:\build
D:
rd /S /Q E:\library\szip
rd /S /Q D:\build\szip

vcpkg depend-info szip

tar -xf szip-2.1.1.tar.gz
cd szip-2.1.1

rd /S /Q vc_build
cmake -G "NMake Makefiles" -Wno-dev -DCMAKE_BUILD_TYPE=Release -B vc_build -S . ^
-DBUILD_SHARED_LIBS:BOOL=1 ^
-DCMAKE_INSTALL_PREFIX=E:/library/szip

#cmake-gui -B vc_build -S .

cmake --build vc_build --config Release
cmake --install vc_build --config Release

你可能感兴趣的:(HDF5,编译,windows)