Eigen » General topics » Using Eigen in CMake Projects

Eigen provides native CMake support which allows the library to be easily used in CMake projects.

Eigen exports a CMake target called Eigen3::Eigen which can be imported using the find_package CMake command and used by calling target_link_libraries as in the following example:

cmake_minimum_required (VERSION 3.0)
project (myproject)

find_package (Eigen3 3.3 REQUIRED NO_MODULE)

add_executable (example example.cpp)
target_link_libraries (example Eigen3::Eigen)

The above code snippet must be placed in a file called CMakeLists.txt alongside example.cpp. After running $ cmake path-to-example-directory CMake will produce project files that generate an executable called example which requires at least version 3.3 of Eigen. Here, path-to-example-directory is the path to the directory that contains both CMakeLists.txt and example.cpp.

Do not forget to set the CMAKE_PREFIX_PATH variable if Eigen is not installed in a default location or if you want to pick a specific version. For instance: $ cmake path-to-example-directory -DCMAKE_PREFIX_PATH=$HOME/mypackages An alternative is to set the Eigen3_DIR cmake's variable to the respective path containing the Eigen3*.cmake files. For instance: $ cmake path-to-example-directory -DEigen3_DIR=$HOME/mypackages/share/eigen3/cmake/

If the REQUIRED option is omitted when locating Eigen using find_package, one can check whether the package was found as follows:

find_package (Eigen3 3.3 NO_MODULE)

if (TARGET Eigen3::Eigen)
  # Use the imported target
endif (TARGET Eigen3::Eigen)