On Linux, Windows and Mac OS X, NOMAD can be compiled using CMake, a tool to manage building of source code.

The minimum version of CMake is 3.15. Older versions should trigger an error. CMake will detect which compiler is available.

A recent C++ compiler supporting C++14 is also required. The compilation has been tested on Linux with gcc 10.1.0, 11.1.0 and 12.2.0. The compilation has been tested on OSX with gcc Homebrew 9.3.0 and 11.2.0, and also Apple clang version 14.0.3. The compilation has been tested on Windows 8 and Windows 10 Enterprise with Microsoft Visual Studio 2019 (cl.exe 19.29.300038.1) and Microsoft Visual Studio 2017.


Some older version of CMake do not trigger an explicit error on the version number.

If the cmake commands fail, check the version manually on the command line

cmake --version

The minimum acceptable version is 3.15.


If the version of CMake is older than 3.15 or if you do not have CMake installed, we recommend to install CMake using a package manager. The other option is to follow the procedure given at to obtain binaries.

For Mac OSX, CMake can be installed on the command line using package manager MacPorts or Homebrew.

For Linux, several package managers exist to automate the procedure.

For Windows, an installer tool is available at Please note that all commands are performed in the Windows Command Prompt windows of Visual Studio.

The NOMAD installation procedure has the three following steps: configuration, building and installation.


Before starting the procedure we recommend to set the environment variable $NOMAD_HOME with the path where NOMAD has been copied. For Windows, add an environment variable %NOMAD_HOME% containing the path. For Linux and OSX,

export NOMAD_HOME=/home/myUserName/PathToNomad


The remaining of the documentation uses the $NOMAD_HOME environment variable.

1- Configuration using provided CMakeLists.txt files

On the command line, in the $NOMAD_HOME directory:

cmake -S . -B build/release

This command creates the files and directories for building (-B) in build/release. The source (-S) CMakeLists.txt file is in the $NOMAD_HOME directory.

The command can be modified to enable/disable some options (see side bar).

OpenMP is used for parallelization of evaluations. CMake will detect if OpenMP is available by default. To forcefully deactivate compilation with OpenMP, see option in side bar.


Sometimes, additional options must be passed during configuration to prevent CMake errors for interfaces. See details in Optimization in library mode.

2- Build

Build the libraries and applications (Linux/OSX):

cmake --build build/release

For Windows, the default configuration is Debug. To obtain the Release version:

cmake --build build/release --config Release

Option --parallel can be added for faster build

It is possible to build only a single application in its working directory:

cd $NOMAD_HOME/examples/basic/library/example1
cmake --build $NOMAD_HOME/build/release --target example1_lib.exe

3- Install

Copy binaries and headers in build/release/[bin, include, lib] and in the examples/tests directories:

cmake --install build/release

Option –config Release should be used on Windows to install Release configuration.

The executable nomad will installed into the directory:


Additionally, for Linux and OSX only, a symbolic link to nomad binary is available:


Building for debug version

The procedure to configure, build and install the debug version is the following (linux/OSX). On the command line in the $NOMAD_HOME directory:

cmake -S . -B build/debug -D CMAKE_BUILD_TYPE=Debug

cmake --build build/debug

cmake --install build/debug

On Windows, all 4 configurations are always build Debug, RelWithDebugInfo, MinSizeRel, Release); the flag CMAKE_BUILD_TYPE can be ignored.

Use another compiler

The environment variables CC and CXX can be used to select the C and C++ compilers.


Clang is the default compiler for Mac OSX using XCode. But, OpenMP (used for parallel evaluations) support is disabled in Clang that come with Xcode. Users of Mac OSX can install and use another compiler to enable OpenMP support. For example, GCC compilers can be obtained using MacPorts or Homebrew.

Testing installation

Once building and installation have been performed some tests can be performed.

The NOMAD binary can be tested:

$NOMAD_HOME/build/release/bin/nomad -v

This should return the version number on the command line.

By default the examples are built and can be tested (Linux and OSX only):

cd build/release

Please note that the tests will take several minutes. Option --parallel xx can be added for faster execution. The log of the tests can be found in $NOMAD_HOME/build/release/Testing/Temporary.