资讯动态

VS2019 安装第三方矩阵库 Eigen 3.4.1

发布时间:2026/10/18 14:59:01 来源:尧图企业网站定制
适用环境Windows 10/11、Visual Studio 2019MSVC v142、CMake 3.15 或更高版本。本文所有命令在x64 Native Tools Command Prompt for VS 2019CMD中运行不要直接粘贴到 Git Bash 或 PowerShell。1. Eigen 需要编译吗Eigen 是头文件模板库header-only。普通工程只需包含Eigen/Dense不必生成或链接eigen.lib。CMake 主要用于安装头文件及导出Eigen3::Eigen接口目标真正需要编译的是调用 Eigen 的应用程序或Eigen 自带的测试程序。[1][2]验证方式编译内容用途方式一最小 C 程序自己的main.cpp验证安装、头文件查找、VS2019 编译和运行方式二完整测试套件Eigen 官方已配置的单元测试程序检验该版本在当前 MSVC 环境下的功能与兼容性两种方式可以分别执行。只想在项目中使用 Eigen完成方式一即可要验证 Eigen 自身则继续执行方式二。2. 准备环境与下载源码安装Visual Studio 2019勾选“使用 C 的桌面开发”确保包含MSVC v142和Windows 10 SDK。安装CMake 3.15并加入PATH。从 Eigen 3.4.1 官方发布页 下载源码压缩包解压到E:\eigen-3.4.1-src。[3]打开开始菜单中的x64 Native Tools Command Prompt for VS 2019执行cmake --version cl where cmakecmake和cl能显示版本信息即可单独运行cl时提示未提供源文件是正常现象。检查源码目录应当都存在dir E:\eigen-3.4.1-src\CMakeLists.txt dir E:\eigen-3.4.1-src\Eigen\Dense路径约定以下假设有D:源码盘和E:安装盘如没有对应盘符统一替换命令中的路径。源码根目录必须是直接包含CMakeLists.txt和Eigen文件夹的目录。3. 安装 Eigen 头文件两种方式共用在 VS2019 命令提示符中执行① 配置使用独立构建目录E:\eigen-3.4.1-src\build关闭测试等无关目标。Windows Batcmake -S D:\eigen-3.4.1-src -B D:\eigen-3.4.1-src\build ^ -G Visual Studio 16 2019 -A x64 ^ -DCMAKE_INSTALL_PREFIXE:\libEigen341 ^ -DBUILD_TESTINGOFF ^ -DEIGEN_BUILD_TESTINGOFF ^ -DEIGEN_BUILD_DOCOFF ^ -DEIGEN_BUILD_DEMOSOFF ^ -DEIGEN_BUILD_BLASOFF ^ -DEIGEN_BUILD_LAPACKOFFLinux Shellcmake-SE:\eigen-3.4.1-src-BE:\eigen-3.4.1-src\build\-GVisual Studio 16 2019-Ax64\-DCMAKE_INSTALL_PREFIXE:\libEigen341\-DBUILD_TESTINGOFF\-DEIGEN_BUILD_TESTINGOFF\-DEIGEN_BUILD_DOCOFF\-DEIGEN_BUILD_DEMOSOFF\-DEIGEN_BUILD_BLASOFF\-DEIGEN_BUILD_LAPACKOFFCMake 选项功能及作用-S E:\eigen-3.4.1-src指定 Eigen 3.4.1 源码目录包含CMakeLists.txt。-B E:\eigen-3.4.1-src\build指定构建目录存放 CMake 缓存及生成的 VS2019 工程文件不存在则自动创建。-G Visual Studio 16 2019指定使用 Visual Studio 2019 生成器。-A x64指定 64 位x64目标平台。-DCMAKE_INSTALL_PREFIXE:\libEigen341指定安装根目录执行cmake --install后头文件通常位于其include\eigen3子目录。-DBUILD_TESTINGOFF关闭通用 CTest 测试配置。-DEIGEN_BUILD_TESTINGOFF关闭 Eigen 官方单元测试工程的生成。-DEIGEN_BUILD_DOCOFF关闭 Eigen 文档构建避免额外依赖 Doxygen、LaTeX。-DEIGEN_BUILD_DEMOSOFF关闭 Eigen 演示程序的构建。-DEIGEN_BUILD_BLASOFF不构建 Eigen 提供的 BLAS 兼容库不影响 Eigen 常规矩阵运算。-DEIGEN_BUILD_LAPACKOFF不构建 Eigen 提供的 LAPACK 兼容库不影响 Eigen 自身的矩阵分解功能。② 安装cmake --install E:\eigen-3.4.1-src\build --config Release③ 验证文件dir E:\libEigen341\include\eigen3\Eigen\Dense能够找到Dense说明头文件已安装。头文件包含目录是...\include\eigen3不是...\include\eigen3\Eigen。说明此步骤不需要先编译ALL_BUILD因为 Eigen 核心没有待编译的二进制库。下一节才会实际调用 MSVC 编译代码。4. 方式一编译最小 C 程序4.1 创建示例工程创建目录mkdir D:\eigen-demo在D:\eigen-demo下新建两个文件注意扩展名不是.txt。main.cpp#includeEigen/Dense#includeiostreamintmain(){Eigen::Matrix2d A;A1.0,2.0,3.0,4.0;Eigen::Vector2db(5.0,11.0);constEigen::Vector2d xA.colPivHouseholderQr().solve(b);std::coutEigen EIGEN_WORLD_VERSION.EIGEN_MAJOR_VERSION.EIGEN_MINOR_VERSION\n;std::coutx x.transpose()\n;return(A*x-b).norm()1e-10?0:1;}CMakeLists.txtcmake_minimum_required(VERSION 3.15) project(EigenDemo LANGUAGES CXX) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(Eigen3 3.4.1 CONFIG REQUIRED) add_executable(eigen_demo main.cpp) target_link_libraries(eigen_demo PRIVATE Eigen3::Eigen)Eigen3::Eigen是传递包含路径等信息的CMake 接口目标不是eigen.lib。[2]4.2 配置、编译、运行cmake -S D:\eigen-demo -B D:\eigen-demo\build -G Visual Studio 16 2019 -A x64 -DCMAKE_PREFIX_PATHE:\libEigen341 cmake --build D:\eigen-demo\build --config Release D:\eigen-demo\build\Release\eigen_demo.exe预期输出Eigen 3.4.1 x 1 2程序退出码为0表示残差检查通过。若要确认退出码紧接着执行echo %ERRORLEVEL%也可以打开D:\eigen-demo\build\EigenDemo.sln选择x64 / Release编译eigen_demo。5. 方式二编译并运行 Eigen 完整测试套件本流程使用独立构建目录E:\eigen-3.4.1-src\tests不修改第 3 节的安装配置。完整测试只包括当前配置已注册、依赖条件满足的测试没有安装的可选依赖不会自动成为可执行的测试。5.1 启用测试并生成 VS2019 工程Windows Batcmake -S E:\eigen-3.4.1-src -B E:\eigen-3.4.1-src\tests -G Visual Studio 16 2019 -A x64 -DBUILD_TESTINGON -DEIGEN_BUILD_TESTINGON -DEIGEN_TEST_CXX11ON -DEIGEN_LEAVE_TEST_IN_ALL_TARGETOFF -DEIGEN_BUILD_DOCOFF -DEIGEN_BUILD_DEMOSOFF -DEIGEN_BUILD_BLASOFF -DEIGEN_BUILD_LAPACKOFFLinux Shellcmake-SE:\eigen-3.4.1-src-BE:\eigen-3.4.1-src\tests\-GVisual Studio 16 2019-Ax64\-DBUILD_TESTINGON\-DEIGEN_BUILD_TESTINGON\-DEIGEN_TEST_CXX11ON\-DEIGEN_LEAVE_TEST_IN_ALL_TARGETOFF\-DEIGEN_BUILD_DOCOFF\-DEIGEN_BUILD_DEMOSOFF\-DEIGEN_BUILD_BLASOFF\-DEIGEN_BUILD_LAPACKOFF主要参数参数值作用EIGEN_BUILD_TESTINGON生成 Eigen 单元测试及测试目标BUILD_TESTINGON启用 CTest 测试支持EIGEN_TEST_CXX11ON启用需要 C11 的相关测试VS2019 支持EIGEN_LEAVE_TEST_IN_ALL_TARGETOFF测试不放入默认ALL_BUILD改为显式执行buildtestsEIGEN_BUILD_DOC / DEMOSOFF不构建文档、演示程序EIGEN_BUILD_BLAS / LAPACKOFF不构建可选 BLAS/LAPACK 接口库5.2 编译整个已配置测试套件cmake --build E:\eigen-3.4.1-src\tests --config Release --target buildtests --parallel 2buildtests是 Eigen 官方提供的测试聚合目标用于编译单元测试不要把ALL_BUILD当作完整测试的同义词。[4]建议先用--parallel 2。测试中有大量模板实例化若遇到 MSVCC1060、C1076或内存不足可改为--parallel 1。5.3 执行全部已编译测试cd /d E:\eigen-3.4.1-src\tests ctest -C Release --output-on-failure -j 2这里的-C Release不可省略VS2019 是多配置生成器CTest 需要知道测试程序位于 Release 目录下。构建测试和运行测试是两个独立动作单独执行ctest不会自动补编未生成的测试程序。[4]通过标准CTest 最后报告100% tests passed、0 tests failed且没有Not Run。如果有失败或未运行项应查看其具体原因不能只看部分PASS。5.4 通过 Visual Studio 界面构建可选打开E:\eigen-3.4.1-src\tests目录中生成的.sln文件选择x64 / Release在“解决方案资源管理器”中查找并生成buildtests目标。之后仍在上述 CMD 窗口运行ctest -C Release --output-on-failure -j 2。若只想快速排查单个测试可先用ctest -N查看测试名称再编译对应测试目标并使用ctest -C Release -R 名称正则 --output-on-failure。这属于定向调试不等于完整测试。6. 常见问题问题处理方法cl未识别使用x64 Native Tools Command Prompt for VS 2019检查 MSVC v142 是否安装找不到CMakeLists.txt或Eigen\Dense解压路径多了一层目录定位真正的 Eigen 源码根目录找不到Eigen3Config.cmake先完成第 3 节安装检查CMAKE_PREFIX_PATH指向安装根目录而非include\eigen3Eigen/Dense: No such file or directory检查头文件是否已安装包含目录应指向...\include\eigen3生成器、x64/Win32 配置冲突给不同生成器或平台使用独立build目录不要复用旧缓存ALL_BUILD没有编译测试正常使用--target buildtests明确构建测试套件CTest 报Unable to find executable先执行第 5.2 节检查编译是否成功并确保 CTest 指定-C ReleaseMSVCC1060/C1076降低构建并行度如--parallel 1检查系统可用内存CTest 有个别测试失败查看--output-on-failure输出区分编译失败、断言失败、超时与缺少可选依赖不能直接判定安装失败找不到eigen.lib正常。Eigen 核心为头文件模板库无需链接二进制库7. 参考资料[1] Eigen 官方主页Requirements头文件库及 CMake 用途。[2] Eigen 3.4 官方文档Using Eigen in CMake Projects。[3] Eigen 3.4.1 官方源码与发布页面。[4] Eigen 官方开发文档Testsbuildtests、check、CTest。[5] Eigen 3.4.1 源码顶层 CMakeLists.txt。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑