[Eigen中文文档] 在 CMake 项目中使用 Eigen

简介: Eigen提供了CMake(CMake 3.0或更高版本)支持,使得该库可以轻松地在CMake项目中使用。

文档总目录

英文原文(Using Eigen in CMake Projects)

Eigen提供了CMake支持,使得该库可以轻松地在CMake项目中使用。

注意:启用这个功能需要CMake 3.0(或更高版本)。

Eigen提供了一个CMake示例,名为Eigen3::Eigen,可以使用find_package CMake命令导入,并通过调用target_link_libraries来使用,如下示例:

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)

上述代码片段必须放置在名为CMakeLists.txt的文件中,与example.cpp放在一起。运行如下命令:

$ cmake path-to-example-directory

CMake将生成项目文件,生成一个名为example的可执行文件,它需要至少版本3.3的Eigen。在此处,path-to-example-directory是包含CMakeLists.txtexample.cpp的目录的路径。

如果Eigen未安装在默认位置,或者你想选择特定版本,请不要忘记设置CMAKE_PREFIX_PATH变量。例如:

{
   mathJaxContainer[0]}HOME/mypackages

另一种方法是将Eigen3_DIR cmake的变量设置为包含Eigen3*.cmake文件的相应路径。例如:

{
   mathJaxContainer[1]}HOME/mypackages/share/eigen3/cmake/

如果在使用find_package查找Eigen时省略了REQUIRED选项,则可以按以下方式检查是否找到了该软件包:

find_package (Eigen3 3.3 NO_MODULE)

if (TARGET Eigen3::Eigen)
  # Use the imported target
endif (TARGET Eigen3::Eigen)
相关文章
|
8月前
|
存储 编译器
[Eigen中文文档] 深入了解 Eigen - 类层次结构
本页面介绍了Eigen类层次结构中 Core 类的设计及其相互关系。一般用户可能不需要关注这些细节,但对于高级用户和Eigen开发人员可能会有用。
131 0
|
9月前
|
数据可视化 C++
msvc编译opencascade和vtk
1.opencascade源码 我下载的时候最新版本是7.7.0
114 0
|
8月前
|
存储 编译器
|
8月前
|
存储 C语言 C++
|
8月前
|
存储 安全 编译器
[Eigen中文文档] 常见的陷阱
本文将介绍一些Eigen常见的陷阱
97 0
|
8月前
|
安全
[Eigen中文文档] 混叠
在 Eigen 中,混叠是指相同的矩阵(或数组或向量)出现在赋值操作符的左边和右边。如下表达式,mat = 2*mat 或者 mat = mat.transpose()。第一个表达式是没有问题的,但是第二个表达式,会出现不可预料的结果。这一节会解释什么是混叠,以及它的危害与处理方法。
55 0
|
8月前
|
存储 编译器 调度
|
8月前
|
并行计算 算法 安全
[Eigen中文文档] Eigen 和多线程
某些 Eigen 算法可以利用硬件中存在的多个内核。
215 0
|
8月前
|
存储 索引
[Eigen中文文档] 扩展/自定义Eigen(三)
本页面针对非常高级的用户,他们不害怕处理一些Eigen的内部细节。在大多数情况下,可以通过使用自定义一元或二元函数避免使用自定义表达式,而极其复杂的矩阵操作可以通过零元函数(nullary-expressions)来实现,如前一页所述。 本页面通过示例介绍了如何在Eigen中实现新的轻量级表达式类型。它由三个部分组成:表达式类型本身、包含有关表达式编译时信息的特性类和评估器类,用于将表达式评估为矩阵。
67 1
|
8月前
|
测试技术 API C++
[Eigen中文文档] 扩展/自定义Eigen(一)
在本节中,将介绍如何向MatrixBase添加自定义方法。由于所有表达式和矩阵类型都继承自MatrixBase,因此将方法添加到MatrixBase会立即使其对所有表达式可用!一个典型的用例是,使Eigen与另一个API兼容。
111 0