123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 |
- ************************************************************************
- * Build and Install HDF5 Applications with CMake *
- ************************************************************************
- 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,
- see the "Minimum C Project Files for CMake" section.
- More information about using CMake can be found at the KitWare
- site, www.cmake.org.
- CMake uses the command line; however, the visual CMake tool is
- available for the configuration step. The steps are similar for
- all of the operating systems supported by CMake.
- NOTES:
- 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
- files may change before the next release.
- 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
- INSTALL_CMake.txt for more information.
- 4. See https://cmake.org/cmake/help/latest/command/find_package.html
- for more information on the CMake "Config Mode Search Procedure".
- ========================================================================
- I. Preconditions
- ========================================================================
- 1. We suggest you obtain the latest CMake for your platform from the Kitware
- web site. The HDF5 1.13.x product requires a minimum CMake version
- of 3.12. If you are using VS2019, the minimum version is 3.15.
- 2. You have installed the HDF5 library built with CMake, by executing
- the HDF Install Utility (the *.msi file in the binary package for
- Windows or the *.sh on Linux). You can obtain pre-built binaries
- from The HDF Group's website at www.hdfgroup.org.
- 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.
- On Windows:
- HDF5_ROOT=C:/Program Files/HDF_Group/HDF5/1.13.x/
- On unix:
- HDF5_ROOT=<install root folder>/HDF_Group/HDF5/1.13.x/
- 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):
- PATH=%PATH%;C:/Program Files/HDF_Group/HDF5/1.13.x/bin
- On unix (*.so):
- LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<install root folder>/HDF_Group/HDF5/1.13.x/lib
- If you are using filter plugin libraries, you will need to set the
- HDF5_PLUGIN_PATH environment variable.
- On Windows:
- HDF5_PLUGIN_PATH=C:/Program Files/HDF_Group/HDF5/1.13.x/lib/plugin
- On unix:
- HDF5_PLUGIN_PATH=<install root folder>/HDF_Group/HDF5/1.13.x/lib/plugin
- (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)
- 5. Created a CMakeLists.txt file(s) for your source. See Section III
- below.
- ========================================================================
- II. Building HDF5 Applications with CMake
- ========================================================================
- Go through these steps to build HDF5 applications with CMake.
- (The application must support building with CMake.)
- 1. Run CMake
- 2. Configure the cache settings
- 3. Build HDF5 Applications
- 4. Test HDF5 Applications
- These steps are described in more detail below.
- 1. Run CMake
- The visual CMake executable is named "cmake-gui.exe" on Windows and should be
- available in your Start menu. For Linux, UNIX, and Mac users the
- 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.
- PREFERRED:
- Users can perform the configuration step without using the visual
- cmake-gui program. The following is an example command line
- configuration step executed within the build directory:
- cmake -G "<generator>" [-D<options>] <sourcepath>
- Where <generator> is
- * MinGW Makefiles
- * NMake Makefiles
- * Unix Makefiles
- * Visual Studio 14 2015
- * Visual Studio 14 2015 Win64
- * Visual Studio 15 2017
- * Visual Studio 15 2017 Win64
- * Visual Studio 16 2019
- * ... in addition VS2019 will need to set the "-A" option,
- * ... [Win32, x64, ARM, ARM64]
- <options> is:
- * BUILD_TESTING:BOOL=ON
- * BUILD_SHARED_LIBS:BOOL=[ON | OFF]
- 2. Configure the cache settings
- 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
- generator you wish to use (for example on Windows, Visual Studio 14 2015 Win64).
- CMake will read in the CMakeLists.txt files from the source directory and
- display options for the HDF5 project. After the first configure you
- can adjust the cache settings and/or specify locations of other programs.
- Any conflicts or new values will be highlighted by the configure
- 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
- project files will be created in the build folder.
- 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:
- cmake -G "Visual Studio 14 2015 Win64" -DBUILD_TESTING:BOOL=ON ..
- 3. Build HDF5 Applications
- On Windows, you can build HDF5 applications using either the Visual Studio Environment
- or the command line. The command line is normally used on linux, Unix, and Mac.
- To build from the command line, navigate to your build directory and
- execute the following:
- cmake --build . --config {Debug | Release}
- NOTE: "--config {Debug | Release}" may be optional on your platform. We
- recommend choosing either Debug or Release on Windows. If you are
- 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
- Release and build the solution.
- 4. Test HDF5 Applications
- To test the build, navigate to your build directory and execute:
- ctest . -C {Debug | Release}
- NOTE: "-C {Debug | Release}" may be optional on your platform. We
- recommend choosing either Debug or Release to match the build
- step on Windows.
- 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
- installation and needs. The cacheinit.cmake file settings are used by
- The HDF Group for daily testing. It should be altered/ignored for the user's
- installation and needs.
- ========================================================================
- III. Minimum C Project Files for CMake
- ========================================================================
- Given the preconditions in section I, create a CMakeLists.txt file at the
- source root. Include the following text in the file:
- ##########################################################
- cmake_minimum_required (VERSION 3.12)
- project (HDF5MyApp C CXX)
- set (LIB_TYPE STATIC) # or SHARED
- string(TOLOWER ${LIB_TYPE} SEARCH_TYPE)
- find_package (HDF5 NAMES hdf5 COMPONENTS C ${SEARCH_TYPE})
- # find_package (HDF5) # Find non-cmake built HDF5
- set_directory_properties(PROPERTIES INCLUDE_DIRECTORIES "${HDF5_INCLUDE_DIR}")
- set (LINK_LIBS ${LINK_LIBS} ${HDF5_C_${LIB_TYPE}_LIBRARY})
- set (example hdf_example)
- add_executable (${example} ${PROJECT_SOURCE_DIR}/${example}.c)
- TARGET_C_PROPERTIES (${example} PRIVATE ${LIB_TYPE})
- target_link_libraries (${example} ${LINK_LIBS})
- enable_testing ()
- include (CTest)
- add_test (NAME test_example COMMAND ${example})
- ##########################################################
- ========================================================================
- IV. APPENDIX
- ========================================================================
- Below is an example of a ctest script that can be used to build the examples.
- Adjust the values as necessary. Note that the defaults can be entered on the
- 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.
- NOTE: this file is available at the HDF web site:
- https://portal.hdfgroup.org/display/support/Building+HDF5+with+CMake
- HDF5_Examples.cmake
- HDF5_Examples_options.cmake
- 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.
- ========================================================================
- For further assistance, send email to help@hdfgroup.org
- ========================================================================
|