LoginSignup
0
0

Ubuntu で Eigen-3.4.0 を CMake から利用する。

Last updated at Posted at 2023-12-30

find_package() によって 線型代数ライブラリ Eigen (https://eigen.tuxfamily.org/) を利用するやり方を報告します。プログラムを CMake でビルドするときに Eigen を検出させることができます。

なお、古いバージョンでよければ

$ sudo apt install libeigen3-dev

で使用できるようになりますが、最新バージョンは使えません。

ディレクトリ構成

ライブラリとそのソースは ~/dev にいれることにします。これは任意の場所に変更することができます。

~/dev/
├── eigen3
    ├── include
├── make
    ├── eigen-3.4.0
        ├── build
  • ソースコードは ~/dev/make/eigen-3.4.0 にダウンロードします。
  • ~/dev/eigen3 にビルドしたライブラリがインストールされます。
  • インストール後、 ~/dev/make/eigen-3.4.0 は削除できます。

~/.bashrc の最後に以下の内容のいずれかを追加する。

export CMAKE_PREFIX_PATH=$HOME/dev

もしくは

export Eigen3_DIR=$HOME/dev

設定を反映させるために、端末(Terminal)を一旦閉じて開き直してください。

Eigen のインストール

ディレクトリ ~/dev/make がなければ作成し、端末(Terminal)で以下を実行する。

$ cd ~/dev/make
$ git clone --depth 1 https://gitlab.com/libeigen/eigen -b 3.4.0 eigen-3.4.0
$ cd eigen-3.4.0
$ mkdir build
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIX=$HOME/dev/eigen3 ..
$ make install
  • Eigen はヘッダオンリーライブラリなので configuration (Release/Debug) の指定は必要ない。

ライブラリの使用方法

簡単な例で使い方を説明する。作業用の適当なディレクトリを用意して、以下の内容で test.cppCMakeLists.txt を作成する。

test.cpp
#include <iostream>

#include <Eigen/Dense>
namespace ei = Eigen;
int main()
{
  ei::Matrix3d A{{1,1,1}, {0,1,1}, {0,0,1}};
  std::cout << A << std::endl;
  std::cout << A*A << std::endl;

  return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.15)
project(test_eigen CXX)
set(CMAKE_CXX_STANDARD 14)

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

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

端末(Terminal)から

$ mkdir build
$ cd build
$ cmake ..
$ make 
$ ./test

として実行できる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0