CMake 配置 Eigen 库使用指南
基本配置
CMakeLists.txt 示例
以下是一个基本的 CMakeLists.txt 示例,用于配置 Eigen 库:
cmake_minimum_required(VERSION 3.3)
project(EigenTest)
# 指定 Eigen3 的 CMake 配置文件路径(如果需要)
# set(Eigen3_DIR /path/to/eigen3/share/eigen3/cmake)
# 查找 Eigen3 包
find_package(Eigen3 REQUIRED)
# 包含 Eigen 头文件
include_directories(${EIGEN3_INCLUDE_DIRS})
# 添加可执行文件
add_executable(EigenTest main.cpp)
示例代码
以下是一个简单的 C++ 示例代码,演示如何使用 Eigen 进行矩阵运算:
#include <iostream>
#include <Eigen/Core>
#include <Eigen/Dense>
int main() {
// 创建一个 4x4 的矩阵
Eigen::MatrixXd mMat(4, 4);
mMat << 11, 10, 13, 15,
3, 24, 56, 1,
2, 12, 45, 0,
8, 5, 6, 4;
// 查找最大值和最小值及其位置
Eigen::MatrixXd::Index maxRow, maxCol, minRow, minCol;
double max = mMat.maxCoeff(&maxRow, &maxCol);
double min = mMat.minCoeff(&minRow, &minCol);
// 输出结果
std::cout << "Max = " << max << std::endl;
std::cout << "Max Position: (" << maxRow << ", " << maxCol << ")" << std::endl;
std::cout << "Min = " << min << std::endl;
std::cout << "Min Position: (" << minRow << ", " << minCol << ")" << std::endl;
return 0;
}
高级配置
指定 Eigen3_DIR
如果 Eigen 的 CMake 配置文件不在默认路径下,可以通过设置 Eigen3_DIR 来指定其位置:
包含特定模块
Eigen 库包含多个模块,如 Geometry、LU、SVD 等。如果需要使用这些模块,可以在代码中包含相应的头文件:
性能优化
为了提高编译速度和程序性能,可以添加以下选项:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DEIGEN_DONT_ALIGN_STATICALLY")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DEIGEN_DONT_VECTORIZE")
编译和运行
编译
使用 CMake 和 Make 工具编译项目:
运行
运行生成的可执行文件:
参考
更多关于 Eigen 库的详细信息和高级用法,请参考 Eigen 官方文档:Eigen 官方文档
通过以上步骤,你可以轻松地在 C++ 项目中配置和使用 Eigen 库,进行高效的矩阵运算。
Ref
https://blog.csdn.net/geerniya/article/details/103202562 https://blog.csdn.net/juluwangriyue/article/details/122162035