CMake integration#

MPL provides supporting files for CMake integration. These are also installed during the installation step. CMake integration is realized via the mpl CMake package, which provides the library target mpl::mpl. The following example CMakeLists.txt file illustrates the usage of the mpl CMake package for creating an MPL application. First, the mpl package is loaded via the find_package function. Then, all targets with MPL dependency must be linked against mpl::mpl. In this way, CMake adds all necessary compiler flags and linker flags that are required for building an MPL application.

# MPI CMake module available since version 3.10
cmake_minimum_required(VERSION 3.10)

project(hello_mpl)

# project requires c++17 to build
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# find the MPL library and its dependencies, e.g., an MPI library
find_package(mpl REQUIRED)

# create executable and link against mpl and its dependencies
add_executable(hello_world hello_world.cc)
target_link_libraries(hello_world PRIVATE mpl::mpl)

When using find_package, CMake searches in a set of platform-dependent standard directories for the requested CMake package. CMake may fail to find the MPL CMake package when MPL was installed in a custom directory. If MPL was installed in a custom directory, add the installation directory (given via CMAKE_INSTALL_PREFIX during MPL configuration see Installation) to the CMAKE_PREFIX_PATH variable during the configuration of the MPL application, e.g.:

user@host:~/hello_mpl/build$ cmake -DCMAKE_PREFIX_PATH:PATH=/path/to/mpl ..