You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

Overview

The CMake tool is used to build ECMWF software. The build process takes place in two stages. First, CMake will run some tests on the system and find out if the required software libraries and headers are available. It uses this information to create native build tools (e.g. Makefiles) for the current platform. Then, the actual build can take place, for example by typing 'make'.

Prerequisite

To install any ECMWF software package, CMake needs to be installed on your system. On most systems this can be done through the standard package manager to install software. For further information to install CMake see

http://www.cmake.org/cmake/help/install.html

Directories

During a build with CMake there are three different directories involved: The source dir, the build dir and the install dir.

DirectoryUseExample
SourceContains the software's source code. This is where a source tarball should be extracted to./tmp/src/sw-package
BuildConfiguration and compiler outputs are generated here, including libraries and executables./tmp/build/sw-package
InstallWhere the software will actually be used from. Installation to this directory is the final stage./usr/local

Of these, the source and build directories can be anywhere on the system. The installation directory is usually left at its default, which is /usr/local. Installing software here ensures that it is automatically available to users. It is possible to specify a different installation directory by adding -DCMAKE_INSTALL_PREFIX=/path/to/install/dir to the CMake command line.

Quick Build Example

Here is an example set of commands to set up and build a software package using default settings. More detail for a customised build is given below.

# unpack the source tarball into a temporary directory
mkdir -p /tmp/src
cd /tmp/src
tar xzvf software-version-Source.tar.gz

# configure and build in a separate directory
mkdir -p /tmp/build
cd /tmp/build
cmake /tmp/src/software-version-Source
make

The software distribution will include a small set of tests which can help ensure that the build was successful. To start the tests, type:

make test

If the tests are successful, you can install the software:

make install

General CMake options

Various options can be passed to the CMake command. The following table gives an overview of some of the general options that can be passed. Options are passed to the cmake command by prefixing them with -D, for example -DCMAKE_INSTALL_PREFIX=/path/to/dir.

 

CMake Option
Description
Default
CMAKE_INSTALL_PREFIXwhere to install the software /usr/local
CMAKE_BUILD_TYPE

to select the type of compilation:

  • Debug
  • RelWithDebInfo
  • Release
  • Production
RelWithDebInfo
(release with debug info)
CMAKE_CXX_FLAGS Additional flags to pass to the C++ compiler 
CMAKE_C_FLAGSAdditional flags to pass to the C compiler 
CMAKE_Fortran_FLAGSAdditional flags to pass to the Fortran compiler 

The C, C++ and Fortran compilers are chosen by CMake. This can be overwritten by setting the environment variables CC, CXX and F77, before the call to cmake, to set the preferred compiler. 

Finding support libraries

If any support libraries are installed in non-default locations, CMake can be instructed where to find them by one of the following methods.

First, the option CMAKE_PREFIX_PATH can be set to a colon-separated list of base directories where the libraries are installed, for example -DCMAKE_PREFIX_PATH=/path/where/my/sw/is/installed. CMake will check these directories for any package it requires. This method is therefore useful if many support libraries are installed into the same location.

Second, package-specific path options can be set, such as in the following list for ECMWF software:

 

Path options - only required when support libraries are not installed in default locations
CMake OptionDescriptionNotes
GRIB_API_PATHpath to where GRIB_API has been installed 
MAGICS_PATHpath to where Magics has been installed 
NETCDF_PATHpath to where netCDF has been installed 
ODB_API_PATHpath to where ODB_API has been installed 
ODB_PATHpath to where the original (IFS) ODB has been installed 
EMOS_PATHpath to where Emoslib has been installedAlso set EMOS_LIB_NAME
FDB_PATHpath to where fdb has been installed 
PROJ4_PATHpath to where proj4 has been installed 

Package dependent options for CMake

ECMWF software packages share some options. The user should specify ON or OFF. If the user does not specify the option, and the default is AUTO, then CMake should try to enable it if possible, otherwise the feature is turned off. If the user explicitly specifies ON, an the feature cannot be enabled because some libraries are missing, the CMake will fail. CMake will report which options are ON and which are OFF. Please note that only features are enabled with flags, therefore, there should not be a ENABLE_BOOST flag.

Here is the list of available options:

Name
Default
eckit
grib_api
odb_api
magics
...
Comment
ENABLE_NETCDFAUTO    
ENABLE_HDFAUTO     
ENABLE_JPGAUTO    Enable JPEG2000 support. This option should look for Jasper or OpenJPG.
ENABLE_PNGAUTO    Enable PNG support
ENABLE_PYTHONAUTO  Offers the Python interface to the package.
ENABLE_FORTRANAUTO  Offers the Fortran interface to the package.
ENABLE_METVIEWOFF     
ENABLE_CAIROAUTO     
ENABLE_GRIBAUTO    
ENABLE_BUFRAUTO     


 


  • No labels