🌊
pybind11でEigen3を使うときはCMakeLists.txtに2行書き足す
以下の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