关于 Eigen
Eigen 是一个纯头文件库,这意味着所有内容都在 .hpp
文件中。Eigen 使用表达式模板技术实现,它在编译时构建结构,仅在需要时评估表达式。这意味着它在编译时构建表达式树并生成自定义代码来评估它们。这种技术使程序员能够绕过 C++ 中的正常表达式评估顺序,并实现循环融合和循环展开等优化。
安装
在基于 Debian 的操作系统上,安装非常简单:
sudo apt-get install libeigen3-dev
或者如果你想从源代码构建它,只需克隆它:
git clone https://gitlab.com/libeigen/eigen.git
创建构建目录:
cd eigen
mkdir build
cd build
现在构建并安装它,
cmake -DCMAKE_CXX_FLAGS=-std=c++1z -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=~/usr .. && make -j8 all install
请注意,我设置了:
-DCMAKE_INSTALL_PREFIX:PATH=~/usr
这样,Eigen 将安装在 home/<用户名称>/usr
中,而不是在 /usr
中,因此不需要 root 权限。
将 Eigen 添加到你的项目
现在,在你的 CMake 文件中你必须设置 Eigen3_DIR
:
# 设置 Eigen3 的 CMake 路径set(Eigen3_DIR "$ENV{HOME}/usr/share/eigen3/cmake")# 这行代码设置了 Eigen3 库的 CMake 路径,路径指向用户主目录下的 `usr/share/eigen3/cmake` 目录。
# 查找 Eigen3 库find_package (Eigen3 REQUIRED NO_MODULE)# 这行代码用于查找 Eigen3 库。`REQUIRED` 表示如果找不到 Eigen3 库,CMake 会报错并停止构建。`NO_MODULE` 表示不使用 CMake 的模块模式。
# 输出 Eigen3 是否找到的信息MESSAGE("EIGEN3_FOUND: " ${EIGEN3_FOUND})# 这行代码输出 Eigen3 是否被找到的信息。`EIGEN3_FOUND` 是一个布尔变量,表示 Eigen3 是否被成功找到。
# 输出 Eigen3 的头文件目录MESSAGE("EIGEN3_INCLUDE_DIR: " ${EIGEN3_INCLUDE_DIR})# 这行代码输出 Eigen3 的头文件目录路径。`EIGEN3_INCLUDE_DIR` 是 Eigen3 头文件所在的目录。
# 输出 Eigen3 的版本号MESSAGE("EIGEN3_VERSION: " ${EIGEN3_VERSION})# 这行代码输出 Eigen3 的版本号。`EIGEN3_VERSION` 是 Eigen3 的版本号变量。
# 输出 Eigen3 的版本字符串MESSAGE("EIGEN3_VERSION_STRING: " ${EIGEN3_VERSION_STRING})# 这行代码输出 Eigen3 的版本字符串。`EIGEN3_VERSION_STRING` 是 Eigen3 的版本字符串变量。
# 添加可执行文件add_executable (example example.cpp)# 这行代码定义了一个名为 `example` 的可执行文件,其源文件为 `example.cpp`。
# 将 Eigen3 库链接到可执行文件target_link_libraries (example Eigen3::Eigen)# 这行代码将 Eigen3 库链接到 `example` 可执行文件中。`Eigen3::Eigen` 是 Eigen3 库的 CMake 目标。