1.安装方法
命令安装(不建议):sudo apt-get install libeigen3-dev
建议使用源码方式:
卸载旧版:
sudo rm -rf /usr/include/eigen3
sudo rm -rf /usr/lib/cmake/eigen3
sudo rm -rf /usr/local/include/eigen3
sudo rm -rf /usr/local/lib/cmake/eigen3
sudo rm -rf /usr/share/doc/libeigen3-dev
sudo rm -rf /usr/local/share/pkgconfig/eigen3.pc /usr/share/pkgconfig/eigen3.pc /var/lib/dpkg/info/libeigen3-dev.list /var/lib/dpkg/info/libeigen3-dev.md5sums
sudo rm -rf /usr/local/lib/pkgconfig/eigen3.pc
sudo rm -rf /usr/local/share/eigen3
pkg-config --modversion eigen3 发现为空 卸载完成
下载源码,见第2节
完成安装流程 :
cd eigen-3.4.0
mkdir build
cd build
cmake ..
sudo make install
sudo cp -r /usr/local/include/eigen3 /usr/include
检测当前版本
pkg-config --modversion eigen3
2.下载源码
地址:
https://eigen.tuxfamily.org/index.php?title=Main_Page
linux 下载tar.gz文件
window 下载 zip文件。解压到本地,如下D盘:
添加环境变量 Path:D:\eigen-3.4.0\Eigen
其实可以不用编译,直接加入个人项目内直接使用即可(linux 和 window 均是), 但要在工程里注意配置CMakeLists.txt
3.vscode配置使用(linux环境)
c_cpp_properties.json —— 解决编辑代码显示不到连接问题,以及 #include <Eigen/Eigen> 失败问题
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include/eigen3/**"
],
"defines": [],
"compilerPath": "/usr/bin/g++",
"cStandard": "c11",
"cppStandard": "c++11",
"intelliSenseMode": "linux-gcc-x64",
"configurationProvider": "ms-vscode.cmake-tools"
}
],
"version": 4
}
task.json —— F5执行代码
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ 生成活动文件",
"command": "/usr/bin/g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/bin/${fileBasenameNoExtension}",
"-std=c++11",
"-pthread",
"-I", "/usr/include/eigen3"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "编译器: /usr/bin/g++"
},
],
"version": "2.0.0"
}
代码文件结构:
.
├── bin # vsode 点击F5 自动生成可执行文件所在文件夹
├── build
├── CMakeLists.txt
├── test.cpp
//test.cpp
#include <Eigen/Core>
#include <Eigen/Eigen>
#include <iostream>
int main(int argc, char *argv[])
{
std::cout << " -----test eigen3 ------" << std::endl;
Eigen::Vector3d P;
P << 1.1, 2.2, 3.666;
std::cout << P.transpose() << std::endl;
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(test_eigen3)
find_package(Eigen3 REQUIRED)
message("===|>- EIGEN3_INCLUDE_DIR= " ${EIGEN3_INCLUDE_DIR})
include_directories(${EIGEN3_INCLUDE_DIR})
add_executable(test ${CMAKE_CURRENT_SOURCE_DIR}/test.cpp)
运行: F5 执行 或cmake执行。 mkdir build && cd build && cmake … && make -j4, ./test
如果find_package eigen3包失败, 则手动set ${EIGEN3_INCLUDE_DIR} 路径,或 include_directories eigen包所在路径。
4.vscode配置使用(win环境)
本文这里使用的编译是mingw64。
.vscode/c_cpp_properties.json
{
"configurations": [
{
"name": "g++",
"includePath": [
"${workspaceFolder}/**",
"D:/eigen-3.4.0/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.19041.0",
"cStandard": "c11",
"cppStandard": "c++14",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}
.vscode/task.json
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成活动文件",
"command": "D:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\bin\\${fileBasenameNoExtension}.exe",
"-I", "D:/eigen-3.4.0"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
代码示例参考第3节。 编译使用命令
cd build
cmake -G "MinGW Makefiles" ..
mingw32-make.exe
5.vscode可能发生的链接问题
cd /usr/include
sudo ln -sf eigen3/Eigen Eigen //就是eigen3/Eigen指向Eigen
sudo ln -sf eigen3/unsupported unsupported