Eigenのinstallと使い方(debian)

環境はbookwormです

Eigen Install

eigen-5.0.0でました。(2025.10.9)

表紙のページ のGet it からtar.bz2をDL

cmakeいります(apt install)。

userのままでok。

cmakeを用いたEigenのinstall

eigen-x.y.z.tar.bz2を展開したらeigen-x.y.zができる。

このeigen-x.y.zの下に<build dir>を作成してcmakeで作業。 HOME(~/)の下に任意の名前のdirectory(<install_dir>)を作成して、そこにEigenのpackageをinstallします。

1  $ mkdir <install_dir>(なくても勝手に作成してくれるようです)
2  $ tar jxvf eigen-3.4.0.tar.bz2
3  $ cd eigen-3.4.0
4  $ mkdir <build dir>
5  $ cd <build dir>
6  $ cmake -DCMAKE_INSTALL_PREFIX=$HOME/<install_dir> ..
7  $ make install

-DCMAKE_INSTALL_PREFIXを指定しないと、 /usr/local/include/eigen3 に入れようとするので、rootでないとNG

make installすることで、希望の<install_dir>に<include>と<share>ができる。

eigen-x.y.zは削除してok

引用元https://qiita.com/kkoba775/items/405e178f04730094b161

cmakeなしのinstall

directoryごとに個別に展開しても使用できるようです。

tar.bz2を展開して、Eigen/を任意の場所にcp

unsupportedを使いたい時は、unsupported/subdirectoryをcp

1  g++ filename.cpp -I path_to_eigen
2  g++ filename.cpp -isystem path_to_eigen

-Iとすると、Eigenに対するwarningが大量に発生するので、 -isystemのほうが、平和です。

引用元:https://qiita.com/MusicScience37/items/13fefa6bed25ab8fb6e9

ただ、これをするとEigenを無数にcpするのと、Include pathをその度に書く 必要があります。趣味の問題で、どぞ。

Eigenの場所をcmakeに教える

~/Eigenにinstallした場合です。

~/.bashrcに以下追加。

1export CMAKE_PREFIX_PATH=$HOME/Eigen:$CMAKE_PREFIX_PATH

追加後、一旦terminal閉じる

指定しないと、 Add the installation prefix of "Eigen3" to CMAKE_PREFIX_PATH or "Eigen3_DIR" と言われます。

指定しない時は、3.4.0の下の Eigen3Config.cmake eigen3-config.cmake を探しに行って、そこをincludeしているみたい。 (Makefile)

指定したら、<eigen-3.4.0>(42.1M)は削除できる。
Eigen本体(Eigen/{include,share})だけは9MB

Eigenを利用::cmakeを使ってcompile

引用元: Ubuntu で Eigen-3.4.0 を CMake から利用する。
https://qiita.com/kkoba775/items/405e178f04730094b161

CMakeLists.txt

cmake_minimum_required(VERSION 3.15)
project(test_eigen CXX)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Eigen3 REQUIRED)
message(STATUS "Found Eigen-" ${EIGEN3_VERSION_STRING})

add_executable(test test.cpp)
target_link_libraries(test Eigen3::Eigen)

test.cpp

 1  #include <iostream>
 2  #include <Eigen/Dense>
 3  namespace ei = Eigen;
 4  int main()
 5  {
 6    ei::Matrix3d A{{1,1,1}, {0,1,1}, {0,0,1}};
 7    std::cout << A << std::endl;
 8    std::cout << A*A << std::endl;
 9
10    return 0;
11  }

iostremは/usr/include/c++/{12,10}/iostremにあり

手順の少ないcmake

[[https://qiita.com/shohirose/items/45fb49c6b429e8b204ac][cmakeの使い方に書いてあったとおり]]

1    $ cmake -S . -B build
2    $ cmake --build build
3    $ ./build/test

mkdir,cd不要

手順の多いcmake

https://qiita.com/kkoba775/items/405e178f04730094b161ここに書いてあった通り

1  $ mkdir build
2  $ cd build
3  $ cmake ..
4  $ make 
5  $ ./test

お好きな方をどぞ

Eigenのdocument

eigen-5.0.0/README.mdには https://eigen.tuxfamily.org/https://libeigen.gitlab.io/docs/. と書いてますが、gitlabはaccountいるのと、いつの間にかコンテンツなくなってました。

ここは、documentの表紙のようです。

1行目のdownloadのとこをclickするとwebと同じ内容をDLできるようです。