【ubuntu-22.04】homcloudのビルドエラー

パーシステントホモロジーを計算してくれるPythonモジュールであるhomcloudをインストールしようとしたところビルドエラーが発生したので、備忘録としてメモを残します。

エラーメッセージ(後半部分のみ抜粋)

      In file included from ext/alpha_shape3.cc:2:
      ext/homcloud_cgal.h:4:10: fatal error: CGAL/version_macros.h: No such file or directory
          4 | #include <CGAL/version_macros.h>
            |          ^~~~~~~~~~~~~~~~~~~~~~~
      compilation terminated.
      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for homcloud
Failed to build homcloud
ERROR: Could not build wheels for homcloud, which is required to install pyproject.toml-based projects

解決策

エラーメッセージそのままですが、CGALがないと怒られているのでCGALを用意します。

管理者権限がある場合

パッケージマネージャーを使うのが簡単です。

sudo apt-get install libcgal-dev

macの場合はbrew install cgalでインストールできます。

管理者権限がない場合(ソースからインストール)

GitHubリポジトリから使いたいバージョンのzipファイルもしくはtar.xzファイルをダウンロードします。
例えばバージョン5.5.2を使用したい場合、CGAL-5.5.2.zip もしくは CGAL-5.5.2-tar.xz をダウンロードします。

wget https://github.com/CGAL/cgal/releases/download/v5.5.2/CGAL-5.5.2.zip

ソースコードをダウンロードできたら解凍してパスを通します。

unzip CGAL-5.5.2.zip

管理者権限がある場合、以下のコマンドを実行することで/usr/local/include等の標準的な場所にインストールすることができます。

cmake .
make install

/usr/local/include等への書き込み権限がない場合、-DCMAKE_INSTALL_PREFIX=<path to installation directory>オプションをつけて実行しましょう。例えば、~/usrにインストールしたい場合は以下のコマンドを実行すれば良いです。

cmake -DCMAKE_INSTALL_PREFIX=~/usr .
make install

この場合、CGALは~/usr/includeにインストールされています。C_INCLUDE_PATH, CPLUS_INCLUDE_PATH${HOME}/usr/includeを追加しましょう。

オプション

以下のようなオプションを指定することができます。

  • CMAKE_INSTALL_PREFIX=<dir> installation directory [/usr/local]
  • CMAKE_BUILD_TYPE=<Debug|Release> build type [Release]
  • CMAKE_C_COMPILER=<program> C compiler [gcc]
  • CMAKE_CXX_COMPILER=<program> C++ compiler [g++]
  • CGAL_CXX_FLAGS additional compiler flags
  • CGAL_MODULE_LINKER_FLAGS add. linker flags (static libraries)
  • CGAL_SHARED_LINKER_FLAGS add. linker flags (shared libraries)
  • CGAL_EXE_LINKER_FLAGS add. linker flags (executables)

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

関連記事

コメント

この記事へのコメントはありません。

CAPTCHA