mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-12-09 07:32:32 +08:00
4a6f93f895
Tested: local linux with cmake jam with configure
320 lines
16 KiB
Plaintext
320 lines
16 KiB
Plaintext
************************************************************************
|
|
* Build and Install HDF5 C/C++ Library with CMake *
|
|
************************************************************************
|
|
|
|
Notes: This short instruction is written for users who want to quickly build
|
|
HDF5 library and tools from the HDF5 source code package using the
|
|
CMake tools.
|
|
|
|
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
|
|
recommended for the configuration step. The steps are similiar for
|
|
all 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 was originally introduced to support development on Windows,
|
|
however it 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. Visit the KitWare site for more information about CMake.
|
|
|
|
3. If you are building HDF5 on Windows, do NOT use or execute any
|
|
files from the windows folder.
|
|
|
|
4. Build and test results can be submitted to our CDash server at:
|
|
cdash.hdfgroup.uiuc.edu.
|
|
Please read the HDF and CDash document at:
|
|
www.hdfgroup.org/CDash/HowToSubmit.
|
|
|
|
|
|
========================================================================
|
|
Preconditions
|
|
========================================================================
|
|
|
|
1. We suggest you obtain the latest CMake for windows from the Kitware
|
|
web site. The HDF5 1.8.x product requires CMake version 2.8.6.
|
|
|
|
2. If you plan to use Zlib or Szip;
|
|
A. Download the packages and install them
|
|
in a central location. For example on Windows, create a folder extlibs
|
|
and install the packages there. Windows users should also read Section V
|
|
in INSTALL_Windows.txt.
|
|
B. Use source packages from a SVN server by adding the following CMake
|
|
options:
|
|
HDF5_ALLOW_EXTERNAL_SUPPORT:STRING="SVN"
|
|
ZLIB_SVN_URL:STRING="http://some_location/zlib/trunk"
|
|
SZIP_SVN_URL:STRING="http://some_location/szip/trunk"
|
|
where "some_location" is the URL to the SVN repository.
|
|
C. Use source packages from a compressed file by adding the following CMake
|
|
options:
|
|
HDF5_ALLOW_EXTERNAL_SUPPORT:STRING="TGZ"
|
|
ZLIB_TGZ_NAME:STRING="zlib_src.ext"
|
|
SZIP_TGZ_NAME:STRING="szip_src.ext"
|
|
TGZ_PATH:STRING="some_location"
|
|
where "some_location" is the URL or full path to the compressed file and
|
|
ext is the type of compression file.
|
|
|
|
|
|
========================================================================
|
|
Building HDF5 C/C++ Libraries with CMake
|
|
========================================================================
|
|
|
|
1. Run CMake
|
|
|
|
The 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. It is recommemded that you
|
|
choose a build directory different then the source directory
|
|
(for example on Windows, if the source is at c:\MyHDFstuff\hdf5, then
|
|
use c:\MyHDFstuff\hdf5\build or c:\MyHDFstuff\build\hdf5).
|
|
|
|
OPTIONAL:
|
|
Users can perform the configuration step without using the visual cmake-gui
|
|
program. We use the file cacheinit.cmake in the config/cmake folder for
|
|
our testing. This file enables all the basic options and we turn specific
|
|
options on or off for testing using the following command line within the build
|
|
directory:
|
|
|
|
cmake -C <sourcepath>/config/cmake/cacheinit.cmake -G "<generator>" [-D<options>] <sourcepath>
|
|
|
|
Where <generator> is
|
|
* Borland Makefiles
|
|
* MSYS Makefiles
|
|
* MinGW Makefiles
|
|
* NMake Makefiles
|
|
* Unix Makefiles
|
|
* Visual Studio 10
|
|
* Visual Studio 10 Win64
|
|
* Visual Studio 6
|
|
* Visual Studio 7
|
|
* Visual Studio 7 .NET 2003
|
|
* Visual Studio 8 2005
|
|
* Visual Studio 8 2005 Win64
|
|
* Visual Studio 9 2008
|
|
* Visual Studio 9 2008 Win64
|
|
|
|
<options> is:
|
|
* SZIP_INCLUDE_DIR:PATH=<path to szip includes directory>
|
|
* SZIP_LIBRARY:FILEPATH=<path to szip/library file>
|
|
* ZLIB_INCLUDE_DIR:PATH=<path to zlib includes directory>
|
|
* ZLIB_LIBRARY:FILEPATH=<path to zlib/library file>
|
|
* <HDF5OPTION>:BOOL=[ON | OFF]
|
|
|
|
<cacheinit.cmake> is:
|
|
# This is the CMakeCache file.
|
|
########################
|
|
# EXTERNAL cache entries
|
|
########################
|
|
SET (BUILD_SHARED_LIBS ON CACHE BOOL "Build Shared Libraries" FORCE)
|
|
SET (BUILD_TESTING ON CACHE BOOL "Build HDF5 Unit Testing" FORCE)
|
|
SET (HDF5_BUILD_CPP_LIB ON CACHE BOOL "Build HDF5 C++ Library" FORCE)
|
|
SET (HDF5_BUILD_EXAMPLES ON CACHE BOOL "Build HDF5 Library Examples" FORCE)
|
|
SET (HDF5_BUILD_FORTRAN ON CACHE BOOL "Build FORTRAN support" FORCE)
|
|
SET (HDF5_BUILD_HL_LIB ON CACHE BOOL "Build HIGH Level HDF5 Library" FORCE)
|
|
SET (HDF5_BUILD_TOOLS ON CACHE BOOL "Build HDF5 Tools" FORCE)
|
|
SET (HDF5_DISABLE_COMPILER_WARNINGS OFF CACHE BOOL "Disable compiler warnings" FORCE)
|
|
SET (HDF5_ENABLE_HSIZET ON CACHE BOOL "Enable datasets larger than memory" FORCE)
|
|
SET (HDF5_ENABLE_PARALLEL OFF CACHE BOOL "Enable parallel build (requires MPI)" FORCE)
|
|
SET (HDF5_ENABLE_SZIP_ENCODING ON CACHE BOOL "Use SZip Encoding" FORCE)
|
|
SET (HDF5_ENABLE_SZIP_SUPPORT ON CACHE BOOL "Use SZip Filter" FORCE)
|
|
SET (HDF5_ENABLE_Z_LIB_SUPPORT ON CACHE BOOL "Enable Zlib Filters" FORCE)
|
|
SET (HDF5_ENABLE_COVERAGE OFF CACHE BOOL "Enable code coverage for Libraries and Programs" FORCE)
|
|
|
|
2. Configure the cache settings
|
|
|
|
2.1 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 9 2008).
|
|
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 -C ../config/cmake/cacheinit.cmake -G "Visual Studio 9 2008" \
|
|
-DHDF5_ENABLE_SZIP_SUPPORT:BOOL=OFF -DHDF5_ENABLE_Z_LIB_SUPPORT:BOOL=OFF ..
|
|
|
|
2.3 On Windows, if you are using a VS Express version you must be sure that the
|
|
following two options are correctly set/unset:
|
|
|
|
HDF5_NO_PACKAGES:BOOL=ON
|
|
HDF5_USE_FOLDERS:BOOL=OFF
|
|
|
|
3. Build HDF5
|
|
|
|
On Windows, you can build HDF5 using either the Visual Studio Environment
|
|
or the command line. The command line is 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.
|
|
|
|
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.
|
|
|
|
3.2.1 The external libraries (zlib and szip) can be configured
|
|
to allow building the libraries by downloading from a SVN repository.
|
|
The option is 'HDF5_ALLOW_EXTERNAL_SUPPORT'; by adding the following
|
|
configuration option:
|
|
-DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING="SVN"
|
|
|
|
The options to control the SVN URL (config/cmake/cacheinit.cmake file):
|
|
ZLIB_SVN_URL:STRING="http://svn.hdfgroup.uiuc.edu/zlib/trunk"
|
|
SZIP_SVN_URL:STRING="http://svn.hdfgroup.uiuc.edu/szip/trunk"
|
|
These should be changed to your location.
|
|
|
|
3.2.2 Or the external libraries (zlib and szip) can be configured
|
|
to allow building the libraries by using a compressed file.
|
|
The option is 'HDF5_ALLOW_EXTERNAL_SUPPORT'; by adding the following
|
|
configuration option:
|
|
-DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING="TGZ"
|
|
|
|
The options to control the SVN URL (config/cmake/cacheinit.cmake file):
|
|
ZLIB_TGZ_NAME:STRING="zlib_src.ext"
|
|
SZIP_TGZ_NAME:STRING="szip_src.ext"
|
|
TGZ_PATH:STRING="some_location"
|
|
where "some_location/xxxx_src.ext" is the URL or full path to the
|
|
compressed file and where ext is the type of the compression file like:
|
|
.bz2, .tar, .tar.gz, .tgz, .zip
|
|
|
|
4. Test HDF5.
|
|
|
|
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. Packaging HDF5
|
|
|
|
To package the build into a simple installer using the NullSoft installer NSIS
|
|
on Windows, or into compressed files (.tar.gz, .sh, .zip), use the CPack tool.
|
|
|
|
To package the build, navigate to your build directory and execute;
|
|
|
|
cpack -C {Debug | Release} CPackConfig.cmake
|
|
|
|
NOTE: We have just introduced the packaging capability and it has not been
|
|
extensively tested. Please send us comments on how it can be improved.
|
|
See NSIS note 8 of this document.
|
|
Also, if you are using a VS Express version or do not want to enable
|
|
the packaging components, set HDF5_NO_PACKAGES to ON (on the command
|
|
line add -DHDF5_NO_PACKAGES:BOOL=ON)
|
|
|
|
6. The files that support building HDF5 with CMake are all 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 users
|
|
installation and needs.
|
|
|
|
7. More information about using CMake can be found at the KitWare site,
|
|
www.cmake.org.
|
|
|
|
8. Nullsoft Scriptable Install System
|
|
The Nullsoft Scriptable Install System (NSIS) is an open source installation
|
|
system. It was created by the WinAmp authors to distribute that application,
|
|
but it is now a general-purpose system which anyone might use. NSIS installers
|
|
recognize /S for silent installation and /D=dir to specify the
|
|
"output directory", which is where the program will be installed. These
|
|
options are case-sensitive, so be sure to type them in upper case.
|
|
|
|
|
|
========================================================================
|
|
All options for HDF5 C/C++ Libraries with CMake
|
|
Option Name --- Option Description --- Option Default
|
|
========================================================================
|
|
---------------- General Build Options ---------------------
|
|
BUILD_SHARED_LIBS "Build Shared Libraries" OFF
|
|
BUILD_STATIC_EXECS "Build Static Executabless" OFF
|
|
BUILD_STATIC_PIC "Build Static PIC" OFF
|
|
BUILD_TESTING "Build HDF5 Unit Testing" OFF
|
|
|
|
---------------- HDF5 Build Options ---------------------
|
|
HDF5_BUILD_CPP_LIB "Build HDF5 C++ Library" OFF
|
|
HDF5_BUILD_EXAMPLES "Build HDF5 Library Examples" OFF
|
|
HDF5_BUILD_FORTRAN "Build FORTRAN support" OFF
|
|
HDF5_BUILD_HL_LIB "Build HIGH Level HDF5 Library" OFF
|
|
HDF5_BUILD_TOOLS "Build HDF5 Tools" OFF
|
|
IF (HDF5_BUILD_FORTRAN)
|
|
HDF5_ENABLE_F2003 "Enable FORTRAN 2003 Standard" OFF
|
|
|
|
---------------- HDF5 Advanced Options ---------------------
|
|
HDF5_DISABLE_COMPILER_WARNINGS "Disable compiler warnings" OFF
|
|
HDF5_Enable_Clear_File_Buffers "Securely clear file buffers before writing to file" ON
|
|
HDF5_Enable_Instrument "Instrument The library" HDF5_Enable_Instrument
|
|
HDF5_ENABLE_CODESTACK "Enable the function stack tracing (for developer debugging)." OFF
|
|
HDF5_ENABLE_COVERAGE "Enable code coverage for Libraries and Programs" OFF
|
|
HDF5_ENABLE_DEPRECATED_SYMBOLS "Enable deprecated public API symbols" ON
|
|
HDF5_ENABLE_EMBEDDED_LIBINFO "embed library info into executables" ON
|
|
HDF5_ENABLE_GPFS "Enable GPFS hints for the MPI/POSIX file driver" OFF
|
|
HDF5_ENABLE_HSIZET "Enable datasets larger than memory" ON
|
|
HDF5_ENABLE_LARGE_FILE "Enable support for large (64-bit) files on Linux." ON
|
|
HDF5_ENABLE_PARALLEL "Enable parallel build (requires MPI)" OFF
|
|
HDF5_ENABLE_TRACE "Enable API tracing capability" OFF
|
|
HDF5_ENABLE_USING_MEMCHECKER "Indicate that a memory checker is used" OFF
|
|
HDF5_METADATA_TRACE_FILE "Enable metadata trace file collection" OFF
|
|
HDF5_NO_PACKAGES "Do not include CPack Packaging" OFF
|
|
HDF5_PACKAGE_EXTLIBS "CPACK - include external libraries" OFF
|
|
HDF5_STRICT_FORMAT_CHECKS "Whether to perform strict file format checks" OFF
|
|
HDF5_TEST_VFD "Execute tests with different VFDs" OFF
|
|
HDF5_USE_16_API_DEFAULT "Use the HDF5 1.6.x API by default" OFF
|
|
HDF5_USE_18_API_DEFAULT "Use the HDF5 1.8.x API by default" OFF
|
|
HDF5_USE_FOLDERS "Do not include CPack Packaging" OFF
|
|
HDF5_WANT_DATA_ACCURACY "IF data accuracy is guaranteed during data conversions" ON
|
|
HDF5_WANT_DCONV_EXCEPTION "exception handling functions is checked during data conversions" ON
|
|
IF (APPLE)
|
|
HDF5_BUILD_WITH_INSTALL_NAME "Build with library install_name set to the installation path" OFF
|
|
IF (CMAKE_BUILD_TYPE MATCHES Debug)
|
|
HDF5_ENABLE_TRACE "Enable API tracing capability" ON
|
|
IF (HDF5_TEST_VFD)
|
|
HDF5_TEST_FHEAP_VFD "Execute tests with different VFDs" ON
|
|
IF (WIN32 AND NOT CYGWIN)
|
|
HDF_LEGACY_NAMING "Use Legacy Names for Libraries and Programs" OFF
|
|
HDF5_ENABLE_THREADSAFE "Enable Threadsafety" OFF
|
|
|
|
---------------- External Library Options ---------------------
|
|
HDF5_ALLOW_EXTERNAL_SUPPORT "Allow External Library Building" "NO"
|
|
HDF5_ENABLE_SZIP_SUPPORT "Use SZip Filter" OFF
|
|
HDF5_ENABLE_Z_LIB_SUPPORT "Enable Zlib Filters" OFF
|
|
ZLIB_USE_EXTERNAL "Use External Library Building for ZLIB" 0
|
|
SZIP_USE_EXTERNAL "Use External Library Building for SZIP" 0
|
|
HDF5_USE_FILTER_FLETCHER32 "Use the FLETCHER32 Filter" ON
|
|
HDF5_USE_FILTER_NBIT "Use the NBIT Filter" ON
|
|
HDF5_USE_FILTER_SCALEOFFSET "Use the SCALEOFFSET Filter" ON
|
|
HDF5_USE_FILTER_SHUFFLE "Use the SHUFFLE Filter" ON
|
|
IF (HDF5_ENABLE_SZIP_SUPPORT)
|
|
HDF5_ENABLE_SZIP_ENCODING "Use SZip Encoding" OFF
|
|
|
|
|
|
************************************************************************
|
|
|
|
Need further assistance, send email to help@hdfgroup.org
|
|
|