Skip to end of metadata
Go to start of metadata

Metview now uses ecCodes

With version 4.8.0, Metview is being built by default with ecCodes instead of GRIB-API for GRIB handling. See November synchronised release news item for more information.


From version 4.5, Metview uses CMake for its compilation and installation. This is part of the process of homogenising the installation procedures for all ECMWF packages.

CMake installation instructions

The CMake build system is used to build ECMWF software. The build process comprises two stages:

  1. CMake runs some tests on the system and finds out if required software libraries and headers are available. It uses this information to create native build tools (e.g. Makefiles) for the current platform.
  2. The actual build can take place, for example by typing 'make'.


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


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

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.

ECMWF software does not support in-source builds. Therefore the build directory cannot be (a subdirectory of) the source directory.

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

On a machine with multiple cores, compilation will be faster by specifying the number of cores to be used simultaneously for the build, for example:

make -j8

If the make command fails, you can get more output by typing:

make VERBOSE=1

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


As before if you have multiple cores, you can run the tests in parallel by:

ctest -j8

Some projects might not be set up to run tests in parallel. If you experience test failures, run the tests sequentially.

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 used. Options are passed to the cmake command by prefixing them with -D, for example -DCMAKE_INSTALL_PREFIX=/path/to/dir.

CMake Option
where to install the software/usr/local

to select the type of compilation:

  • Debug
  • RelWithDebInfo
  • Release
  • Production
(release with debug info)
 Additional flags to pass to the C++ compiler 
Additional flags to pass to the C compiler 
Additional 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. Further the variable CMAKE_CXX_FLAGS can be used to set compiler flags for optimisation or debugging. For example, using CMAKE_CXX_FLAGS="-O2 -mtune=native" sets options for better optimisation. 

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.


Debugging configure failures

If CMake fails to configure your project, run with debug logging first:

cmake -DECBUILD_LOG_LEVEL=DEBUG [...] /path/to/source

This will output lots of diagnostic information (in blue) on discovery of dependencies and much more.

Requirements to build Metview

The following table lists the dependencies Metview requires to be built from source. Please note, if you install these package from source you also might have to install the respective "-devel" packages.



Third party packages

(best installed through system package manager)


if Metview's user interface is required (version 4.6.2 or later of Qt is needed).

Note that on some systems it is also necessary to install the libQtWebKit-devel development package (it may have different names on different systems)

ImageMagick Metview's user interface is required
proj OPERA radar data support is required
netcdf 4

Please note: You also need to install the legacy C++ interface and HDF5

curl Optional for web services support (WMS, Download module)
ECMWF libraries
grib-apiGRIB-API HomeAlternatively you can use ecCodes
odb-apiODB-API Homeif ODB support needed
magicsMagicsif plotting support is needed. Note that Magics should be configured with the -DENABLE_METVIEW=ON option.

For a 'pure batch' installation of Metview with no user interface, it is possible to supply Magics with the option -DENABLE_METVIEW_NO_QT=ON


CMake options used in Metview

CMake options are passed to the cmake command by prefixing them with -D, for example -DENABLE_UI=OFF.

CMake option
ENABLE_UIenables the Qt-based user interfaceON

build the Qt user interface using Qt5 libraries
(also requires that Magics is built with this option enabled)
might require the flag: -DCMAKE_PREFIX_PATH=/path/to/qt5/

ENABLE_PLOTTINGenables plotting capabilities using MagicsON
ENABLE_OPERA_RADARenables the Opera Radar Filter module (requires the proj4 library and headers)OFF
ENABLE_MARSenables MARS access (not required if using through the Web API)OFF
MARS_LOCAL_HOMEsets the path to where local MARS is installed 
ENABLE_ECCODESEnables ecCodes being used instead of GRIB_API. We recommend
to use ecCodes, but if require GRIB-API you can set this to OFF.
ENABLE_ODBenables processing and plotting of ODB dataOFF
ENABLE_MARS_ODBenables ODB capabilities in MARS clientOFF
ENABLE_USAGE_LOGenables logging of Metview startup callsOFF
LOG_DIRpath to where to log the Metview startup calls 
METVIEW_SCRIPTname of the generated Metview startup scriptmetview
EXTRA_CONFIG_PATHpath to optional directory containing metview_local* script files 
ENABLE_QT_DEBUGoutputs additional log messages from Qt-based modulesOFF
EXTRA_TITLEbuild-specific title to add to the log entries 
ENABLE_INPEenables INPE modulesON
Path options - only required when support libraries are not installed in default locations
CMake OptionDescriptionNotes
ECCODES_PATHpath to where ecCodes has been installed 
GRIB_API_PATHpath to where GRIB_API has been installed 
MAGICS_PATHpath to where Magics has been installedOnly required if plotting is enabled
NETCDF_PATHpath to where netCDF has been installed 
ODB_API_PATHpath to where ODB_API has been installedOnly required if ODB is enabled
ODB_PATHpath to where the original ODB has been installedOptional if ODB is enabled
EMOS_PATHpath to where Emoslib has been installedAlso set EMOS_LIB_NAME
FDB_PATHpath to where fdb has been installedOnly required if MARS is enabled
PROJ4_PATHpath to where proj4 has been installedOnly required if OPERA Radar is enabled
FLEXTRA_PATHpath to where the FLEXTRA executable has been installedSee Tutorials for more on FLEXTRA

Notes for installers of Metview 3

If you have installed Metview 3 before, then here are some things to note. Metview 4 does not use directly OpenGL for its on-screen graphics; therefore, it is not necessary to build your own Mesa library anymore. However, Metview 4 does not come with its own Emoslib; therefore, it will be necessary to install your own.

Metview 4 can be installed side-by-side with an existing Metview 3 installation. However, note that the default startup script will be


so make sure this will not clash with an existing installation. See the table of CMake options for the flag which will allow you to change this.


See also the Installation FAQ.


  • No labels


  1. Hi! Just to comment that I have installed Metview in my laptop (debian 8) and I also needed libcurl-gnutls-dev (third party library), flex and bison (utilities). Installation went smooth after these extras were available.

    1. Thanks for that info Juan!