Home | History | Annotate | Download | only in doc
      1 namespace Eigen {
      2 
      3 /**
      4 
      5 \page TopicCMakeGuide Using %Eigen in CMake Projects
      6 
      7 %Eigen provides native CMake support which allows the library to be easily
      8 used in CMake projects.
      9 
     10 \note %CMake 3.0 (or later) is required to enable this functionality.
     11 
     12 %Eigen exports a CMake target called `Eigen3::Eigen` which can be imported
     13 using the `find_package` CMake command and used by calling
     14 `target_link_libraries` as in the following example:
     15 \code{.cmake}
     16 cmake_minimum_required (VERSION 3.0)
     17 project (myproject)
     18 
     19 find_package (Eigen3 3.3 REQUIRED NO_MODULE)
     20 
     21 add_executable (example example.cpp)
     22 target_link_libraries (example Eigen3::Eigen)
     23 \endcode
     24 
     25 The above code snippet must be placed in a file called `CMakeLists.txt` alongside
     26 `example.cpp`. After running
     27 \code{.sh}
     28 $ cmake path-to-example-directory
     29 \endcode
     30 CMake will produce project files that generate an executable called `example`
     31 which requires at least version 3.3 of %Eigen. Here, `path-to-example-directory`
     32 is the path to the directory that contains both `CMakeLists.txt` and
     33 `example.cpp`.
     34 
     35 If you have multiple installed version of %Eigen, you can pick your favorite one by setting the \c Eigen3_DIR cmake's variable to the respective path containing the \c Eigen3*.cmake files. For instance:
     36 \code
     37 cmake path-to-example-directory -DEigen3_DIR=$HOME/mypackages/share/eigen3/cmake/
     38 \endcode
     39 
     40 If the `REQUIRED` option is omitted when locating %Eigen using
     41 `find_package`, one can check whether the package was found as follows:
     42 \code{.cmake}
     43 find_package (Eigen3 3.3 NO_MODULE)
     44 
     45 if (TARGET Eigen3::Eigen)
     46   # Use the imported target
     47 endif (TARGET Eigen3::Eigen)
     48 \endcode
     49 
     50 */
     51 
     52 }
     53