にわかプラス

にわかが玄人になることを夢見るサイトです。社会や国際のトレンド、プログラミングや電子工作のことについて勉強していきたいです。

GitのCGALを実行できるようにするまで

sponsor

GitのCGALを実行できるようにするまで

CGALとは

https://www.cgal.org/
計算幾何学のC++オープンソースライブラリ
一番有名っぽい
ライセンスはGPL/LGPL/Commercial lisence

なぜCGALに手を出したか

  • 幾何学的なことを勉強する必要が出てきた
  • CGALのつかいかたやマニュアルから一般的な幾何学(Computer geometry)の知識取得を目論んだ
    • Demoやマニュアルが充実している
  • Header onlyライブラリであったり、wasm化事例があったり使い勝手が良さそう

調べてもあまり使用事例が出てこない。GDALより汎用的なジャンルな気もするがライセンスが問題なのかあまりヒットしなかった。日本では6社がCommercial lisenceを結んでいるらしい。

環境

Ubuntu22.04(Pop!OS 22.04)

Install

環境構築が終わった後に記憶で書いているため、ぬけもれがたくさんある。 構築しながら書けばよかったと反省。

Git からCGAKをCloneしてexampleを実行してみる。 コマンドは公式を参照した https://doc.cgal.org/latest/Manual/usage.html

cd $HOME/CGAL-6.0.1/examples/Triangulation_2 # go to an example directory
cmake -DCMAKE_BUILD_TYPE=Release . # configure the examples
make # build the examples

Qtがないというエラーが出るので、Qtをインストールする。

HPからオンラインインストーラを取得。深いところにあって分かりづらかった。

# これらも必要だった(経緯は失念)
sudo apt-get install build-essential libgl1-mesa-dev

# Qt6オンラインインストーラで警告が出たのでいかを実行

apt install libxcb-cursor0 libxcb-cursor-dev

Qtのインストール3hくらいかかりそうな勢い。

多分exampleはviewerを必要とするからQtが必要。CUI実行だけならいらないはず。

オンラインインストーラだからQt creatorとかも入ってきてる気がする。

一旦キャンセルしてaptで取得してみた

install qt6-base-dev libqt6opengl6-dev

だけどもビルドに依然としてqt6がないと言われる。しょうがないのでオンラインインストーラから再度インストール。Qt creatorは除いた。

Qt6のインストール完了したが、パスが通ってないのか

➜  Triangulation_2 git:(master) cmake -DCMAKE_BUILD_TYPE=Release . 
CMake Error at /usr/lib/x86_64-linux-gnu/cmake/CGAL/CGALConfig.cmake:117 (message):
  The requested CGAL component Qt6 does not exist!
Call Stack (most recent call first):
  CMakeLists.txt:7 (find_package)

(CGAL/.github/にinstall.shを言うのがあり、その中にQt6があるのでこれをとりあえず実行してみる。たぶん不必要)

   Triangulation_2 cmake -DCGAL_DIR=/home/mr-akami/workspace/tmp/CGAL-6.0.1 -DCMAKE_PREFIX_PATH="/home/<your user>/Qt/6.8.0/gcc_64" -DQt6_DIR="/home/<your user>/Qt/6.8.0/gcc_64/lib/cmake/Qt6" -DCMAKE_BUILD_TYPE=Release .

これでいけた。 Githubからとってきたソースを使う場合は-DCGAL-DIRが必要だったみたいだ。

-DCMAKE_PREFIX_PATHはQtの場所。

-DQt6_DIRはQtのcmakeの大本のQt6Config.cmakeある場所。指定しなくてもいいかも。

cmakeでmakeファイルが作られたあと、makeをうてばビルドが走る