...
During a build with CMake there are three different directories involved: The source dir, the build dir and the install dir.
| Source | Contains the software's source code. This is where a source tarball should be extracted to. | /tmp/src/sw-package |
| Build | Configuration and compiler outputs are generated here, including libraries and executables. | /tmp/build/sw-package |
| Install | Where 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.
...
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.
|
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:
|
If the make command fails, you can get more output by typing:
|
If the build is successful, you can install the software:
|
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_INSTALL_PREFIX | where to install the software | /usr/local |
CMAKE_BUILD_TYPE | to select the type of compilation:
| RelWithDebInfo (release with debug info) |
CMAKE_CXX_FLAGS | Additional flags to pass to the C++ compiler | |
CMAKE_C_FLAGS | Additional flags to pass to the C compiler |
The C and C++ compilers are chosen by CMake. This can be overwritten by setting the environment variables CC and CXX, 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.
...
If CMake fails to configure your project, run with debug logging first:
|
This will output lots of diagnostic information (in blue) on discovery of dependencies and much more.
...
The following table lists the dependencies Metview CodesUI 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.
| Compilers | |||
|---|---|---|---|
| C++ | http://gcc.gnu.org/ | ||
| Utilities | |||
make | http://www.gnu.org/software/make/ | ||
Third party packages (best installed through system package manager) | |||
| Qt | http://www.qt.io/ | minimum version 5.0.0 of Qt is required | |
| bash | https://www.gnu.org/software/bash/ | ||
| ECMWF libraries | |||
| ecCodes | ecCodes | minimum version 2.6.0. of ecCodes is required | |
CMake options used in CodesUI
CMake options are passed to the cmake command by prefixing them with -D, for example -DENABLE_QT_DEBUG=ON.
CMake option | Description | Default |
|---|---|---|
| ENABLE_QT_DEBUG | outputs additional log messages from Qt-based modules | OFF |
| Path options - only required when support libraries are not installed in default locations | ||
| CMake Option | Description | Notes |
| ECCODES_PATH | path to where ecCodes has been installed | |
| CMAKE_PREFIX_PATH | might be required if the Qt5 libraries are not found by default. Then they it can be specified like this: | |