Skip to end of metadata
Go to start of metadata

Overview

ecCodes uses CMake for compilation and installation. This is a first step towards an homogenisation of the installation procedures for all ECMWF packages.

Like autotools, CMake will run some tests on the user's system to find out if required third-party software libraries are available and note their locations (paths). Based on this information it will produce the Makefiles needed to compile and install ecCodes.

CMake is a cross-platform free software program for managing the build process of software using a compiler-independent method.

Generating the Makefiles with CMake

One nice and highly recommended feature of CMake is the ability to do out of source builds. In this way you can make all your ".o" files, various temporary depend files, and even the binary executables without cluttering up your source tree. To use out of source builds, first create a build directory, then change into your build directory and run cmake pointing it to the source directory and using your own options.

The command gives feedback on what requirements are fulfilled and what software is still required. The following table gives an overview of the different options.  The default (without any options) will compile a shared library only and install it in /usr/local/.

 

CMAKE_INSTALL_PREFIXwhere you want to install your ecCodes/usr/local
CMAKE_BUILD_TYPE

to select the type of compilation:

  • Debug
  • RelWithDebInfo
  • Release
RelWithDebInfo
BUILD_SHARED_LIBSSelect the type of library built:
  • ON (Build shared libraries only)
  • OFF (Build static libraries only)
  • BOTH (Build both shared and static libraries)
ON
CMAKE_C_COMPILERC Compiler 
CMAKE_C_FLAGSFlags for the C Compiler 
CMAKE_Fortran_COMPILERFortran Compiler 
CMAKE_Fortran_FLAGSFlags for the Fortran Compiler 
ENABLE_NETCDFFor the grib_to_netcdf convert toolAUTO
ENABLE_JPGEnable JPEG2000 support. This option should look for Jasper or OpenJPG

AUTO

ENABLE_PNGEnable PNG support for decoding/encodingOFF
ENABLE_AECEnable Adaptive Entropy Coding for decoding/encodingOFF
ENABLE_PYTHONOffers the Python interface to the package.
Note: Currently only Python 2 is supported.
AUTO
ENABLE_FORTRANOffers the Fortran interface to the packageAUTO
ENABLE_ECCODES_THREADSEnable POSIX threadsOFF
ENABLE_ECCODES_OMP_THREADSEnable OpenMP threadsOFF
ENABLE_MEMFSSee Memory based access to definition/sample filesOFF
cmake options
doc
default


Note: The compilers can also be overridden by setting the environment variables CC and FC.

Note: To see the full output from the compilation, you can use:

   make VERBOSE=1

Quick installation guide

Here is an example of a list of commands you could use to install ecCodes.  It is assumed “>” is the shell prompt.

> tar -xzf  eccodes-x.y.z-Source.tar.gz
> mkdir build ; cd build 

> cmake -DCMAKE_INSTALL_PREFIX=/path/to/where/you/install/eccodes ../eccodes-x.y.z-Source 
...

> make
> ctest
> make install


It is recommended that you always build in a clean directory and also install into a clean directory.

Note that for the testing step (running the ctest command) you need to be connected to the internet (and set the relevant "http_proxy" environment variable if you must use a proxy) so data files can be downloaded for the tests. You can however download all the data files in one go (See the data tarball link at the top of the Releases page)
Also note that if you have several CPUs, you can invoke the "make" and "ctest" commands above in parallel (e.g. "make -j4").  This will speed up the whole build/test process significantly.

Legacy build system ("autotools")

From ecCodes version 2.0.0 the "autotools" build system is deprecated and no longer supported.

 

  • No labels