2011-05-13 22:11:52 +08:00
|
|
|
************************************************************************
|
2013-04-29 22:18:34 +08:00
|
|
|
* Build and Install HDF5 Applications with CMake *
|
2011-05-13 22:11:52 +08:00
|
|
|
************************************************************************
|
|
|
|
|
2015-08-28 05:46:50 +08:00
|
|
|
Notes: This short instruction is written for users who want to quickly
|
|
|
|
build HDF5 applications using the CMake tools. Users can adapt
|
|
|
|
these instructions for their own applications. For more information,
|
2013-04-29 22:18:34 +08:00
|
|
|
see the "Minimum C Project Files for CMake" section.
|
2015-08-28 05:46:50 +08:00
|
|
|
|
|
|
|
More information about using CMake can be found at the KitWare
|
2013-04-29 22:18:34 +08:00
|
|
|
site, www.cmake.org.
|
2015-08-28 05:46:50 +08:00
|
|
|
|
|
|
|
CMake uses the command line; however, the visual CMake tool is
|
2013-02-19 04:56:21 +08:00
|
|
|
available for the configuration step. The steps are similar for
|
2013-04-29 22:18:34 +08:00
|
|
|
all of the operating systems supported by CMake.
|
2015-08-28 05:46:50 +08:00
|
|
|
|
2011-05-13 22:11:52 +08:00
|
|
|
NOTES:
|
2015-08-28 05:46:50 +08:00
|
|
|
1. Using CMake for building and using HDF5 is under active
|
|
|
|
development. While we have attempted to provide error-free
|
|
|
|
files, please understand that development with CMake has not
|
|
|
|
been extensively tested outside of HDF. The CMake specific
|
2013-04-29 22:18:34 +08:00
|
|
|
files may change before the next release.
|
2015-08-28 05:46:50 +08:00
|
|
|
|
|
|
|
2. CMake for HDF5 development should be usable on any system
|
|
|
|
where CMake is supported. Please send us any comments on how
|
|
|
|
CMake support can be improved on any system.
|
|
|
|
|
|
|
|
3. See the appendix at the bottom of this file for an example
|
|
|
|
of using a ctest script for building and testing. See
|
2014-09-26 05:11:54 +08:00
|
|
|
INSTALL_CMake.txt for more information.
|
2013-04-29 22:18:34 +08:00
|
|
|
|
2022-02-03 03:45:59 +08:00
|
|
|
4. See https://cmake.org/cmake/help/latest/command/find_package.html
|
|
|
|
for more information on the CMake "Config Mode Search Procedure".
|
2013-04-29 22:18:34 +08:00
|
|
|
|
2011-05-13 22:11:52 +08:00
|
|
|
|
|
|
|
========================================================================
|
2015-08-28 05:46:50 +08:00
|
|
|
I. Preconditions
|
2013-04-29 22:18:34 +08:00
|
|
|
========================================================================
|
2011-05-13 22:11:52 +08:00
|
|
|
|
2022-02-03 03:45:59 +08:00
|
|
|
1. We suggest you obtain the latest CMake for your platform from the Kitware
|
2023-04-04 05:38:10 +08:00
|
|
|
web site. The HDF5 1.15.x product requires a minimum CMake version
|
2024-03-06 06:42:08 +08:00
|
|
|
of 3.18. If you are using VS2022, the minimum CMake version is 3.21.
|
2015-08-28 05:46:50 +08:00
|
|
|
|
|
|
|
2. You have installed the HDF5 library built with CMake, by executing
|
|
|
|
the HDF Install Utility (the *.msi file in the binary package for
|
2022-02-03 03:45:59 +08:00
|
|
|
Windows or the *.sh on Linux). You can obtain pre-built binaries
|
|
|
|
from The HDF Group's website at www.hdfgroup.org.
|
2013-04-29 22:18:34 +08:00
|
|
|
|
2022-02-03 03:45:59 +08:00
|
|
|
3. Set the HDF5_ROOT CMake variable, -DHDF5_ROOT=<install_path>
|
|
|
|
or environment variable, set(ENV{HDF5_ROOT} "<install_path>")
|
|
|
|
to the installed location of HDF5.
|
2021-07-15 00:12:01 +08:00
|
|
|
On Windows:
|
2023-04-04 05:38:10 +08:00
|
|
|
HDF5_ROOT=C:/Program Files/HDF_Group/HDF5/1.15.x/
|
2021-07-15 00:12:01 +08:00
|
|
|
On unix:
|
2023-04-04 05:38:10 +08:00
|
|
|
HDF5_ROOT=<install root folder>/HDF_Group/HDF5/1.15.x/
|
2021-07-15 00:12:01 +08:00
|
|
|
|
|
|
|
If you are using shared libraries, you may need to add to the path
|
|
|
|
environment variable. Set the path environment variable to the
|
|
|
|
installed location of the library files for HDF5.
|
|
|
|
On Windows (*.dll):
|
2023-04-04 05:38:10 +08:00
|
|
|
PATH=%PATH%;C:/Program Files/HDF_Group/HDF5/1.15.x/bin
|
2021-07-15 00:12:01 +08:00
|
|
|
On unix (*.so):
|
2023-04-04 05:38:10 +08:00
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<install root folder>/HDF_Group/HDF5/1.15.x/lib
|
2021-07-15 00:12:01 +08:00
|
|
|
|
|
|
|
If you are using filter plugin libraries, you will need to set the
|
|
|
|
HDF5_PLUGIN_PATH environment variable.
|
|
|
|
On Windows:
|
2023-04-04 05:38:10 +08:00
|
|
|
HDF5_PLUGIN_PATH=C:/Program Files/HDF_Group/HDF5/1.15.x/lib/plugin
|
2021-07-15 00:12:01 +08:00
|
|
|
On unix:
|
2023-04-04 05:38:10 +08:00
|
|
|
HDF5_PLUGIN_PATH=<install root folder>/HDF_Group/HDF5/1.15.x/lib/plugin
|
2015-08-28 05:46:50 +08:00
|
|
|
|
2013-04-29 22:18:34 +08:00
|
|
|
(Note there are no quote characters used on Windows and all platforms
|
|
|
|
use forward slashes)
|
|
|
|
|
|
|
|
4. Created separate source and build directories.
|
|
|
|
(CMake commands are executed in the build directory)
|
|
|
|
|
2015-08-28 05:46:50 +08:00
|
|
|
5. Created a CMakeLists.txt file(s) for your source. See Section III
|
2013-04-29 22:18:34 +08:00
|
|
|
below.
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-05-13 22:11:52 +08:00
|
|
|
========================================================================
|
2013-04-29 22:18:34 +08:00
|
|
|
II. Building HDF5 Applications with CMake
|
2011-05-13 22:11:52 +08:00
|
|
|
========================================================================
|
|
|
|
|
2013-04-29 22:18:34 +08:00
|
|
|
Go through these steps to build HDF5 applications with CMake.
|
2015-08-28 05:46:50 +08:00
|
|
|
(The application must support building with CMake.)
|
2013-04-29 22:18:34 +08:00
|
|
|
|
|
|
|
1. Run CMake
|
|
|
|
2. Configure the cache settings
|
|
|
|
3. Build HDF5 Applications
|
2014-09-26 05:11:54 +08:00
|
|
|
4. Test HDF5 Applications
|
2013-04-29 22:18:34 +08:00
|
|
|
|
|
|
|
These steps are described in more detail below.
|
2011-05-13 22:11:52 +08:00
|
|
|
1. Run CMake
|
|
|
|
|
2013-10-03 03:46:32 +08:00
|
|
|
The visual CMake executable is named "cmake-gui.exe" on Windows and should be
|
2011-05-13 22:11:52 +08:00
|
|
|
available in your Start menu. For Linux, UNIX, and Mac users the
|
2015-08-28 05:46:50 +08:00
|
|
|
executable is named "cmake-gui" and can be found where CMake was
|
|
|
|
installed.
|
|
|
|
|
|
|
|
Specify the source and build directories. Make the build and source
|
|
|
|
directories different. For example on Windows, if the source is at
|
|
|
|
c:\MyHDFstuff\hdf5, then use c:\MyHDFstuff\hdf5\build or
|
|
|
|
c:\MyHDFstuff\build\hdf5 for the build directory.
|
|
|
|
|
2013-10-03 03:46:32 +08:00
|
|
|
PREFERRED:
|
2015-08-28 05:46:50 +08:00
|
|
|
Users can perform the configuration step without using the visual
|
|
|
|
cmake-gui program. The following is an example command line
|
2013-04-29 22:18:34 +08:00
|
|
|
configuration step executed within the build directory:
|
2015-08-28 05:46:50 +08:00
|
|
|
|
2011-05-13 22:11:52 +08:00
|
|
|
cmake -G "<generator>" [-D<options>] <sourcepath>
|
2015-08-28 05:46:50 +08:00
|
|
|
|
|
|
|
Where <generator> is
|
2011-05-13 22:11:52 +08:00
|
|
|
* MinGW Makefiles
|
|
|
|
* NMake Makefiles
|
|
|
|
* Unix Makefiles
|
2018-01-18 00:27:00 +08:00
|
|
|
* Visual Studio 15 2017
|
|
|
|
* Visual Studio 15 2017 Win64
|
2021-07-15 00:12:01 +08:00
|
|
|
* Visual Studio 16 2019
|
|
|
|
* ... in addition VS2019 will need to set the "-A" option,
|
|
|
|
* ... [Win32, x64, ARM, ARM64]
|
2023-04-04 05:38:10 +08:00
|
|
|
* Visual Studio 17 2022
|
|
|
|
* ... in addition VS2022 will need to set the "-A" option,
|
|
|
|
* ... [Win32, x64, ARM, ARM64]
|
2011-05-13 22:11:52 +08:00
|
|
|
|
|
|
|
<options> is:
|
|
|
|
* BUILD_TESTING:BOOL=ON
|
2015-04-23 23:41:22 +08:00
|
|
|
* BUILD_SHARED_LIBS:BOOL=[ON | OFF]
|
2011-05-13 22:11:52 +08:00
|
|
|
|
|
|
|
2. Configure the cache settings
|
|
|
|
|
2015-08-28 05:46:50 +08:00
|
|
|
2.1 Visual CMake users, click the Configure button. If this is the first time you are
|
|
|
|
running cmake-gui in this directory, you will be prompted for the
|
2024-03-06 06:42:08 +08:00
|
|
|
generator you wish to use (for example on Windows, Visual Studio 16 2019).
|
2015-08-28 05:46:50 +08:00
|
|
|
CMake will read in the CMakeLists.txt files from the source directory and
|
|
|
|
display options for the HDF5 project. After the first configure you
|
2011-05-13 22:11:52 +08:00
|
|
|
can adjust the cache settings and/or specify locations of other programs.
|
2015-08-28 05:46:50 +08:00
|
|
|
|
2011-05-13 22:11:52 +08:00
|
|
|
Any conflicts or new values will be highlighted by the configure
|
2015-08-28 05:46:50 +08:00
|
|
|
process in red. Once you are happy with all the settings and there are no
|
|
|
|
more values in red, click the Generate button to produce the appropriate
|
|
|
|
build files.
|
|
|
|
|
|
|
|
On Windows, if you are using a Visual Studio generator, the solution and
|
2011-05-13 22:11:52 +08:00
|
|
|
project files will be created in the build folder.
|
2015-08-28 05:46:50 +08:00
|
|
|
|
2011-05-13 22:11:52 +08:00
|
|
|
On linux, if you are using the Unix Makefiles generator, the Makefiles will
|
|
|
|
be created in the build folder.
|
|
|
|
|
|
|
|
2.2 Alternative command line example on Windows in c:\MyHDFstuff\hdf5\build directory:
|
2015-08-28 05:46:50 +08:00
|
|
|
|
2024-03-06 06:42:08 +08:00
|
|
|
cmake -G "Visual Studio 16 2019" -A "x64" -DBUILD_TESTING:BOOL=ON ..
|
2011-05-13 22:11:52 +08:00
|
|
|
|
2012-04-12 01:37:50 +08:00
|
|
|
3. Build HDF5 Applications
|
2015-08-28 05:46:50 +08:00
|
|
|
|
|
|
|
On Windows, you can build HDF5 applications using either the Visual Studio Environment
|
2012-04-12 01:37:50 +08:00
|
|
|
or the command line. The command line is normally used on linux, Unix, and Mac.
|
2011-05-13 22:11:52 +08:00
|
|
|
|
|
|
|
To build from the command line, navigate to your build directory and
|
2013-04-29 22:18:34 +08:00
|
|
|
execute the following:
|
2015-08-28 05:46:50 +08:00
|
|
|
|
|
|
|
cmake --build . --config {Debug | Release}
|
|
|
|
|
2011-05-13 22:11:52 +08:00
|
|
|
NOTE: "--config {Debug | Release}" may be optional on your platform. We
|
|
|
|
recommend choosing either Debug or Release on Windows. If you are
|
2015-08-28 05:46:50 +08:00
|
|
|
using the pre-built binaries from HDF, use Release.
|
|
|
|
|
|
|
|
3.1 If you wish to use the Visual Studio environment, open the solution
|
|
|
|
file in your build directory. Be sure to select either Debug or
|
2011-05-13 22:11:52 +08:00
|
|
|
Release and build the solution.
|
2015-08-28 05:46:50 +08:00
|
|
|
|
2013-04-29 22:18:34 +08:00
|
|
|
4. Test HDF5 Applications
|
2011-05-13 22:11:52 +08:00
|
|
|
|
2013-04-29 22:18:34 +08:00
|
|
|
To test the build, navigate to your build directory and execute:
|
2015-08-28 05:46:50 +08:00
|
|
|
|
2011-05-13 22:11:52 +08:00
|
|
|
ctest . -C {Debug | Release}
|
2015-08-28 05:46:50 +08:00
|
|
|
|
2011-05-13 22:11:52 +08:00
|
|
|
NOTE: "-C {Debug | Release}" may be optional on your platform. We
|
|
|
|
recommend choosing either Debug or Release to match the build
|
2015-08-28 05:46:50 +08:00
|
|
|
step on Windows.
|
2011-05-13 22:11:52 +08:00
|
|
|
|
2015-08-28 05:46:50 +08:00
|
|
|
5. The files that support building with CMake are all of the files in the
|
|
|
|
config/cmake folder, the CMakeLists.txt files in each source folder, and
|
|
|
|
CTestConfig.cmake. CTestConfig.cmake is specific to the internal testing
|
|
|
|
performed by The HDF Group. It should be altered for the user's
|
2013-04-29 22:18:34 +08:00
|
|
|
installation and needs. The cacheinit.cmake file settings are used by
|
2015-08-28 05:46:50 +08:00
|
|
|
The HDF Group for daily testing. It should be altered/ignored for the user's
|
|
|
|
installation and needs.
|
2013-04-29 22:18:34 +08:00
|
|
|
|
|
|
|
|
2011-05-13 22:11:52 +08:00
|
|
|
|
|
|
|
========================================================================
|
2013-04-29 22:18:34 +08:00
|
|
|
III. Minimum C Project Files for CMake
|
2011-05-13 22:11:52 +08:00
|
|
|
========================================================================
|
|
|
|
|
2015-10-07 02:48:50 +08:00
|
|
|
Given the preconditions in section I, create a CMakeLists.txt file at the
|
|
|
|
source root. Include the following text in the file:
|
2011-05-13 22:11:52 +08:00
|
|
|
|
2013-04-29 22:18:34 +08:00
|
|
|
##########################################################
|
2022-09-03 08:31:29 +08:00
|
|
|
cmake_minimum_required (VERSION 3.18)
|
2024-03-06 06:42:08 +08:00
|
|
|
project (HDF5MyApp C)
|
2011-05-13 22:11:52 +08:00
|
|
|
|
2016-10-15 00:22:22 +08:00
|
|
|
set (LIB_TYPE STATIC) # or SHARED
|
|
|
|
string(TOLOWER ${LIB_TYPE} SEARCH_TYPE)
|
|
|
|
|
|
|
|
find_package (HDF5 NAMES hdf5 COMPONENTS C ${SEARCH_TYPE})
|
2015-08-28 05:46:50 +08:00
|
|
|
# find_package (HDF5) # Find non-cmake built HDF5
|
2018-04-18 04:57:51 +08:00
|
|
|
set_directory_properties(PROPERTIES INCLUDE_DIRECTORIES "${HDF5_INCLUDE_DIR}")
|
2016-10-15 00:22:22 +08:00
|
|
|
set (LINK_LIBS ${LINK_LIBS} ${HDF5_C_${LIB_TYPE}_LIBRARY})
|
2011-05-13 22:11:52 +08:00
|
|
|
|
2014-03-12 05:14:57 +08:00
|
|
|
set (example hdf_example)
|
2013-03-07 02:40:47 +08:00
|
|
|
|
2014-03-12 05:14:57 +08:00
|
|
|
add_executable (${example} ${PROJECT_SOURCE_DIR}/${example}.c)
|
|
|
|
target_link_libraries (${example} ${LINK_LIBS})
|
2013-03-07 02:40:47 +08:00
|
|
|
|
2015-08-28 05:46:50 +08:00
|
|
|
enable_testing ()
|
2014-03-12 05:14:57 +08:00
|
|
|
include (CTest)
|
2013-03-07 02:40:47 +08:00
|
|
|
|
2014-03-12 06:07:13 +08:00
|
|
|
add_test (NAME test_example COMMAND ${example})
|
2013-04-29 22:18:34 +08:00
|
|
|
##########################################################
|
2012-04-12 01:37:50 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
2013-04-29 22:18:34 +08:00
|
|
|
========================================================================
|
|
|
|
IV. APPENDIX
|
|
|
|
========================================================================
|
2011-05-13 22:11:52 +08:00
|
|
|
|
2015-10-07 02:48:50 +08:00
|
|
|
Below is an example of a ctest script that can be used to build the examples.
|
2015-10-21 23:44:41 +08:00
|
|
|
Adjust the values as necessary. Note that the defaults can be entered on the
|
2015-10-07 02:48:50 +08:00
|
|
|
command line and the build folder is created as a sub-folder. Windows should
|
|
|
|
adjust the forward slash to double backslashes, except for the HDF_DIR
|
|
|
|
environment variable.
|
2013-03-07 02:40:47 +08:00
|
|
|
|
2024-03-06 06:42:08 +08:00
|
|
|
NOTE: this file is available in the HDF5 repository, for more information see:
|
|
|
|
https://github.com/HDFGroup/hdf5/blob/develop/release_docs/USING_CMake_Examples.txt
|
2013-10-03 03:46:32 +08:00
|
|
|
|
2024-03-06 06:42:08 +08:00
|
|
|
ctest -S HDF5_Examples.cmake -C Release -V -O test.log
|
2013-10-03 03:46:32 +08:00
|
|
|
|
2017-03-21 02:40:57 +08:00
|
|
|
Also available at the HDF web site is a CMake application framework template.
|
|
|
|
You can quickly add files to the framework and execute the script to compile
|
|
|
|
your application with an installed HDF5 binary.
|
2013-03-07 02:40:47 +08:00
|
|
|
|
2011-05-13 22:11:52 +08:00
|
|
|
|
2013-04-29 22:18:34 +08:00
|
|
|
========================================================================
|
|
|
|
For further assistance, send email to help@hdfgroup.org
|
|
|
|
========================================================================
|
|
|
|
|
2011-05-13 22:11:52 +08:00
|
|
|
|