Eigen  5.0.1-dev+bc3b3987
 
Loading...
Searching...
No Matches
Using Eigen in CMake Projects

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

Note
CMake 3.5 (or later) is required to enable this functionality.

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.5)
project (myproject)
find_package (Eigen3 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. Here, path-to-example-directory is the path to the directory that contains both CMakeLists.txt and example.cpp. Note that if you have multiple instances of Eigen installed, find_package will use the first one encountered. To request a specific version of Eigen, use the <version> option in find_package:

find_package(Eigen3 3.4 REQUIRED NO_MODULE) # Restricts to 3.4.z

Starting with Eigen 3.4.1, we also support a range spanning major versions:

find_package(Eigen3 3.4...5 REQUIRED NO_MODULE) # Any version >=3.4.1 but <6.0.0.

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 NO_MODULE)
if (TARGET Eigen3::Eigen)
# Use the imported target
endif (TARGET Eigen3::Eigen)