🌊

pybind11でEigen3を使うときはCMakeLists.txtに2行書き足す

2024/12/04に公開

以下の2行を、CMakeLists.txtに書き足してください。Eigen3へのパスが設定されます。

find_package(Eigen3 CONFIG REQUIRED)
include_directories(${EIGEN3_INCLUDE_DIR})

pybind11でEigen3を使おうとすると pybind11/eigen.h をincludeする必要がありますが、これがincludeしてる eigen/matrix.h#include <Eigen/Core> しています。
例えば、macOSのhomebrewでEigen3をインストールした場合、Eigen3のヘッダファイルは /opt/homebrew/include/eigen3 以下にありますので、includeパスを設定しない場合は #include <eigen3/Eigen/Core> となります。
以上から、特になにもしないと、macOSではビルドする際にエラーになります。

fatal error: 'Eigen/Core' file not found
   28 | #include <Eigen/Core>
      |          ^~~~~~~~~~~~

これを解決するため、記事冒頭の2行を書き足して、cmakeにEigen3のincludeパスを教える必要があります。

Discussion