OpenSiv3dのインストール備忘録 (2020年8月インストール成功確認)

Twitterで意気揚々とOpenGLでマイクラのクローン作ってやるぜって言ってたけど、シェーダーとかなんやら面倒くさくなってOpenSiv3dに逃げることにしました。

許して

今回はその逃げ場であるOpenSiv3dのインストールの備忘録となります。

環境はUbuntu 18.04となります。

インストール方法調べてるとUbuntuでのインストールに苦戦してる人が多かったので書き記すことにしました。

基本的にやったことは以下の通り

必要パッケージのインストール

これは普通にaptでインストールするだけ、自分がインストールしたのは以下のパッケージ

  • libopenal-dev
  • libgif-dev
  • libwebp-dev
  • libogg-dev
  • libvorbis-dev
  • libudev-dev
  • libswresample-dev
  • libturbojpeg0-dev
$ sudo apt install libopenal-dev libgif-dev libwebp-dev libogg-dev libvorbis-dev libudev-dev libswresample-dev libturbojpeg0-dev 

これで必要なパッケージのインストールは完了

# OpenCV4の現在(2020/08/13)の最新版4.4.0のビルド

https://opencv.org/releases/から現在の最新版である4.4.0のソースをダウンロードしてunzipしておきます。

cmakeにちょっとしたオプションをつける以外は公式サイトに書いてあるインストール方法とほとんど変わりません。

OpenCV: Installation in Linux

まずはビルド用のディレクトリを作って・・・

$ cd opencv-4.4.0/ $ mkdir build && cd build/ 

cmakeを使ってビルドします。

ここでpkg-configのオプションをつけといてください。

$ cmake -D CMAKE_BUILD_TYPE=Release -DOPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local .. 

あとは公式のインストール行程に従ってやっていくだけです。

$ make -j7
$ sudo make install

boostの現在の最新版のビルド

aptでインストールしてきたboostだとバージョンが古く、Siv3Dをビルドする途中でboost/geometry/algorithms/densify.hppがないと怒られてしまいます。

aptでインストールしてきたboostは1.65.1で、Siv3Dが要求するdensifyは1.67.0で追加されているものでした。

そのため最新版をビルドします。

これはboostの日本語情報サイトに情報があるので、こちらに書いてある行程に従ってインストールしていきます。

Boostライブラリのビルド方法 - boostjp

$ git clone --recursive https://github.com/boostorg/boost.git
$ cd boost
$ ./bootstrap.sh
$ ./b2 install -j2 --prefix=/usr/local

これで/usr/localにboostの最新版が入りました。

OpenSiv3Dのインストール

ここまで来ればあとは公式のREADMEに従ってインストールするだけです。

OpenSiv3D/README_JP.md at master · Siv3D/OpenSiv3D · GitHub

$ git clone https://github.com/Siv3D/OpenSiv3D.git
$ cd OpenSiv3D $ mkdir Linux/Build
$ cd Linux/Build

公式はninjaというビルドツール使ってますが、まあmakeでも大丈夫なので私はmake使いました。

$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make

これでlibSiv3D.aが生成されればOKです。

動作テストをしたければOpenSiv3D/Linux/Appの方に移動してサンプルをビルドします。

$ cd ../App/ $ cmake .
$ make
$ ./Siv3D_App

libSiv3D.aは他のプロジェクトでも使えるように/opt/OpenSiv3D/Linuxなどのディレクトリを作ってそこにコピーしておきましょう。