57 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| namespace Eigen {
 | |
| 
 | |
| /**
 | |
| 
 | |
| \page TopicCMakeGuide Using %Eigen in CMake Projects
 | |
| 
 | |
| %Eigen provides native CMake support which allows the library to be easily
 | |
| used in CMake projects.
 | |
| 
 | |
| \note %CMake 3.0 (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:
 | |
| \code{.cmake}
 | |
| 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)
 | |
| \endcode
 | |
| 
 | |
| The above code snippet must be placed in a file called `CMakeLists.txt` alongside
 | |
| `example.cpp`. After running
 | |
| \code{.sh}
 | |
| $ cmake path-to-example-directory
 | |
| \endcode
 | |
| 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 <a href="https://cmake.org/cmake/help/v3.7/variable/CMAKE_PREFIX_PATH.html">\c CMAKE_PREFIX_PATH </a> variable if Eigen is not installed in a default location or if you want to pick a specific version. For instance:
 | |
| \code{.sh}
 | |
| $ cmake path-to-example-directory -DCMAKE_PREFIX_PATH=$HOME/mypackages
 | |
| \endcode
 | |
| An alternative is to set the \c Eigen3_DIR cmake's variable to the respective path containing the \c Eigen3*.cmake files. For instance:
 | |
| \code{.sh}
 | |
| $ cmake path-to-example-directory -DEigen3_DIR=$HOME/mypackages/share/eigen3/cmake/
 | |
| \endcode
 | |
| 
 | |
| If the `REQUIRED` option is omitted when locating %Eigen using
 | |
| `find_package`, one can check whether the package was found as follows:
 | |
| \code{.cmake}
 | |
| find_package (Eigen3 3.3 NO_MODULE)
 | |
| 
 | |
| if (TARGET Eigen3::Eigen)
 | |
|   # Use the imported target
 | |
| endif (TARGET Eigen3::Eigen)
 | |
| \endcode
 | |
| 
 | |
| */
 | |
| 
 | |
| }
 | 
