Version 1.9.0
This update brings some bug fixes and many improvements to the internals of h5pp
, in particular to the initialization of a file. In addition, many changes have been made to the CMake build/install process of h5pp
itself and its handling of dependencies.
Highlights
C++
- Fixed bug where multiple file handles would remain opened after repeated calls to setKeepFileOpened()
- Added support for all fixed width integers (
int8_t
,int16_t
, ...) - Initialize and detect
std::complex
,Scalar2
andScalar3
much more efficiently. - Fix warnings from -Wpedantic and include headers required on some platforms
- Rename fields in enum h5pp::ResizePolicy to shorter ones
CMake
- Improved compatibility of CMake build/install with MSVC. Linking to h5pp should now work properly.
- Improved propagation of build configuration to dependencies
- Many many minor improvements to the CMake configuration/build/install process. Installed artifacts have been tested to work properly and importing
find_package(h5pp)
should now successfully import a targeth5pp::h5pp
in all the different configurations. - New opt-in package manager: CPM
- Re-release: Reduce minimum required cmake version to 3.18
- Re-re-release: Reduced cmake version requirement further down to 3.15 for compatibility with conan-center index.
Changelog
79ddb1b Added new example showing how to copy datasets between files
e111340 Updated spdlog 1.8.2 -> 1.8.5
9939add Rewrite of compound data type detection: std::complex, Scalar2, Scalar3
3719bca Added coverage support
3fe9273 use std::begin/std::end in templated contexts
97eb1d8 Add ghc::filesystem to cpm-mode
8f3ba74 Add [[maybe_unused]] to avoid warning
47d2ac6 Add support for the CPM package manager
5ae1f8d More robust version checking in Findspdlog.cmake and Findfmt.cmake
c8e5047 Fixing the custom Find modules to find local dependencies
b0a7c5f Fixed setting REQUIRED flag on find_package when H5PP_PACKAGE_MANAGER=find
f2bdc63 Add H5PP_DEPS_INSTALL_DIR as HINTS to find modules
87e9823 Drop support for conda packages.
5b72f2a Fail if HDF5 is not found when H5PP_PACKAGE_MANAGER=find
459bfc8 include cstddef for std::byte
f6d4777 Updated hdf5 build on fetch-mode
76a801e Updated github actions matrix
de10161 More complete CMake configure message
dd817b0 Give find_library/find_path correct hints and path suffixes when finding zlib
f7ae546 Avoid warning with -Wpedantic
85090d9 Add check_required_components(h5pp) to config.in as is recommended
53be358 Improved deprecation notice for old options
e087007 Refactor SetupSearchPaths.cmake to SetupPaths.cmake since it has more general purposes now
602875c Rename H5PP_DEPS_IN_SUBDIR -> H5PP_PREFIX_ADD_PKGNAME
8f39549 Use <PackageName>_ROOT
mechanism to find ZLIB and SZIP when building HDF5
612c9c9 Default H5PP_DEPS_INSTALL_DIR to CMAKE_INSTALL_PREFIX
323c8ea * Rename H5PP_DEPS_IN_SUBDIR -> H5PP_PREFIX_ADD_PKGNAME * Windows: Collect binaries in the same build directory
f30ccda Clarify purpose for setting CMAKE_FIND_LIBRARY_SUFFIXES as a cache variable
0472d06 Use standard path /lib/cmake/h5pp for config files
29316bc Pass CMake policies to dependency builds
f664b62 Add branch in InstallPackage.cmake to handle multi-config generators
99e3d97 More robust search for zlib before building HDF5
622200e Make sure szip builds both static and shared components
48c21cf Help find_library find szip on MSVC
9d8824a Improved examples in README.md
ad93862 Help find_library find zlib on MSVC
7dcb566 Fix test and example target name on MSVC
960ad56 Add description for new mode H5PP_PACKAGE_MANAGER=fetch
c34b9c5 Update cmake minimum requirement in readme
7edd190 Add zlib libname for windows compatibility
0bd0574 Fix HDF5 install during H5PP_PACKAGE_MANAGER=fetch
e2d6043 More careful inclusion of fmt and spdlog headers
3638931 Do not cache dependency builds
2c32e5c Major rework of mode H5PP_PACKAGE_MANAGER=cmake
e903683 Simplified external build of HDF5
2cf6e05 Minor refactoring of PrintTargetInfo.cmake
5bff663 Remove the need for setting explicit policies by raising the required CMake version instead
5230af5 Update PrintTargetProperties.cmake to support LOCATION on INTERFACE IMPORTED libraries
bbf0766 Replace libaec by libszip for HDF5 compression
93169a5 Update CMake minimum version requirement to 3.19
4ce05b9 Make sure <PackageName>_FOUND
is true after find_package
1c0ce91 Add rpath settings for dependency libraries built by h5pp
afc67c3 Simpler overrideable settings for cxx standard in dependency builds
a8e2ec2 Simplified build externalproject_add call by adding variables to initial cache instead
0670039 Updated build of ghc::filesystem
adaffc4 Make sure find_library() finds static/shared libraries correctly based on BUILD_SHARED_LIBS
9185156 Replace backslash in windows paths with forward slashes to avoid unintended escape
46b6df8 Let CMake autodetect the language during dependency builds
d3398a0 Simplified get_num_threads.
3191264 Rename BuildDependency.cmake to InstallPackage.cmake
35d8e84 Prepend h5pp-
to target names for tests and examples
ac150e3 Use the initial-cache feature of CMake to propagate the build configuration to subprocesses
ff06fab Corrected home directory on windows10.yml
25de94d Debugging FindHDF5.cmake on CI
93815ad Add PATH_SUFFIXES to find_library call so that aec/szip/zlib can be found also when H5PP_DEPS_IN_SUBDIR=OFF
7dd5276 Print install message for aec and zlib
130d155 Transmit -fPIC to depedendency builds
d241d6d Simpler preemption of Threads::Threads
ea1e3cd More careful use of NO_CMAKE_... flags when searching for HDF5
40ed005 Add option H5PP_PACKAGE_MANAGER=fetch to h5ppConfig.cmake
a149a64 Set _ROOT in for dependencies built by h5pp using H5PP_PACKAGE_MANAGER=cmake in generated h5ppConfig.cmake
b94de58 H5PP_PACKAGE_MANAGER=cmake will now handle ZLIB and SZIP dependencies of HDF5 properly
afdcce7 Refactor the setup of std::filesystem to avoid code duplication
8ee6dd4 Set CXX standard when H5PP_PACKAGE_MANAGER=fetch
5b1783d Refactor the setup of std::filesystem to avoid code duplication
3ecc4c7 Github actions: Test some new build configurations
763edb6 Updated steps for preempting the target Thread::Thread in h5ppConfig.cmake.in
f153c6d Updated script for getting the drop-in replacement ghc::filesystem if std::filesystem is missing
639f66f Faster check of std::optional header using try_compile, which works without global variable CMAKE_CXX_STANDARD
81f2044 Set CMAKE_CXX_STANDARD to 17 when building dependencies (if no standard has been set already)
de3eb16 H5PP_PACKAGE_MANAGER=cmake will now handle ZLIB and SZIP dependencies of HDF5 properly
1e20890 Updated check for whether h5pp is being used as subproject (i.e. with add_subdirectory from another project)
870c5c5 New H5PP_PACKAGE_MANAGER option: fetch
d2f9812 Updated dependency build scripts
8a4a23d Fix unusual error when printing target properties on edge-case imported interface libraries.
522db66 Deprecate use of variables _DIRECTORY_HINTS
bcb89e7 When using -DH5PP_PACKAGE_MANAGER=cmake
, use variables H5PP_DEPS_BUILD_DIR
and H5PP_DEPS_INSTALL_DIR
to control the dependency build/install locations
61f35a0 Updated modules Findspdlog.cmake and Findfmt.cmake to enable checking library versions directly on targets
ae18d93 Renamed all targets with a "h5pp-" prefix to avoid target name collisions with other libraries when using FetchContent
09e2bdf Updated dependencies to latest versions
ce68bff Correctly check whether a target is imported so that its location can be queried without failure.
4cfc8ec Stop checking and modifying the default CMAKE_INSTALL_PREFIX.
6c6569f Move headers from "h5pp/include/h5pp/..." to just include/h5pp/..."
ac5e3b6 Rename ResizePolicy enum members to more compact ones
163de06 Fix subtle leak of filehandle on repeated calls to "setKeepFileOpened()"