$ 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らしいんですけど・・・
- エラー消えた
- boostバージョンが違う(それはそう)
- TOMLReaderのnumeric_limitsでエラー
- src/ThirdParty/cpptoml/cpptoml.hでlimits.hをインクルード
- 音声周りもエラーが出ている
- avcodec_send_packetが存在しないというエラー
- src/SIv3D-Platform/Linux/Siv3D/AudioCodec/CAudioCodec.cppで、extern “C”部分に追加:
# include <libavcodec/avcodec.h>- ffmpegのファイル一覧 をもとに、/usr/includeを探し回ってたらあった
- src/SIv3D-Platform/Linux/Siv3D/AudioCodec/CAudioCodec.cppで、extern “C”部分に追加:
- 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 ..すればヨシ!
- avcodec_send_packetが存在しないというエラー
サンプルをビルドしてみる
cd ../App
cp ../../WindowsDesktop/Main.cpp .
mkdir build && cd build
cmake -GNinja ..
ninja- Linuxのデフォルトサンプルはすぐ終了するらしいので、WindowsDesktop(macOSでも🉑)ディレクトリからサンプルプログラムを持ってくる
- https://twitter.com/Watasuke102/status/1510858296055382020
なんとかなりましたとさ
おしまい