$ sudo pacman -S git cmake ninja alsa-lib ffmpeg gtk3 libcgif glu harfbuzz mpg123 opencv opus opusfile soundtouch libtiff libjpeg-turbo libvorbis libwebp libxft
$ git clone https://github.com/Siv3D/opensiv3d
$ cd opensiv3d/Linux
$ mkdir build && cd build
$ cmake -GNinja ..
$ ninja
 

大量にエラーが出るので、とりあえずninja -k 8192でエラーが出ても中断しないようにして完走させる

  • boost関連の大量のエラー
    • boostバージョンが違う(それはそう)
      • 0.6.3は1.71.0〜1.73.0を要求する
      • Arch Linux Archiveからboostとboost-libsをそれぞれ持ってくる
      • 1.73.0がなかったので1.72.0
    • バージョンを変えても、bimapのエラーが消えない
      • なんか今のUbuntuリポジトリ、libboost-devは1.74らしいんですけど・・・
      • エラー消えた
  • TOMLReaderのnumeric_limitsでエラー
  • 音声周りもエラーが出ている
    • avcodec_send_packetが存在しないというエラー
      • src/SIv3D-Platform/Linux/Siv3D/AudioCodec/CAudioCodec.cppで、extern “C”部分に追加:# include <libavcodec/avcodec.h>
    • avcodec_find_decoderで型に関するエラー?
      • AVCodec* に const AVCodec* を代入しようとしているため
      • FFmpeg、2021/04/27のコミット (626535f) で変更が加えられていたらしい
      • ffmpegパッケージの更新履歴を見る限り、4.4-2あたりでこの変更が取り入れられたのではないかと予想
      • 4.3.2を入れてみる
        • ffmpeg-2_4.3.2-6-x86_64.pkg.tar.zstをダウンロード
        • libvpx.so=6-64、libx264.so=161-64が必要らしい
        • コンフリクトしかしない 他のパッケージも依存しているffmpegのダウングレードなので、それはそう
      • ffmpeg4.4とかいうピッタリなパッケージがあった あったけど明示的にこれを使わせる方法がわからない
        • そもそもこれが指定されてるのはcmake内だから、CMakeListsをいじれば良さそう
        • libavformatとかが指定されてるのはpkg_check_modulesの中 この関数はpkg-configを呼んでるらしい
        • PKG_CONFIG_PATHを指定することで、探索するパスを変えることができる
        • ということで、cmake時にPKG_CONFIG_PATH=/usr/lib/ffmpeg4.4/pkgconfig cmake -GNinja .. すればヨシ!

サンプルをビルドしてみる

cd ../App
cp ../../WindowsDesktop/Main.cpp .
mkdir build && cd build
cmake -GNinja ..
ninja

なんとかなりましたとさ
おしまい