見出し画像

ローグライク(仮)Linux/Windows ビルド

トップ画像の帰属: lewing@isc.tamu.edu Larry Ewing and The GIMP

以前から Linux はビルドできるようにしていたが時間がかかっており、Windows はビルドすることもできていなかったので今日はその2点に対応してみた。

Linux 版スピードアップ

macOS で開発をしているが Linux 版は Docker を使ってビルドできるようにしている。しかし、これが15分ほど時間を要するため短縮できないか試した。

結果的に5分でビルドできるようになった。時間がかかっていたのは依存するライブラリのビルドだった。CMake の ExternalProject_add を使って依存ライブラリを取り込んでいたため、生成される make が自動的にビルドしてしまう。以前は Docker イメージに最低限の clang/cmake 開発環境を採用していたためビルドするときはプロジェクトすべてをビルドしてしまっていた。これを、依存パッケージだけビルドした特殊な Docker イメージを自動的に作成できる仕組みを作って、そのイメージ上で cmake できるようにした。cmake のキャッシュがイメージに入っている状態なので依存ライブラリのビルドがスキップされるというわけである。これが10分短縮に繋がった。

Windows 版のビルド

今までは Windows 版をビルドしようとしても gettext というライブラリがビルドできずにいた。これを VSTS という Microsoft が提供するクラウド環境で試していたため全く原因が掴めず真面目に取り組んでいなかった。

そして今日はついに Windows 環境を整備した。手元に Windows のノートパソコンがあったため、そこでビルドできるようにしているが、まだ成功していない。

Windows では通常 Visual Studio を使ってビルドするものだが、macOS や UNIX-like 向けに CMake プロジェクトが作られているため Windows でも Visual Studio のプロジェクトを作らず CMake を使ってビルドできる環境を作ろうとしている。使っている開発ソリューションは MSYS というもので、これは UNIX-like な環境を Windows に作成できるものである。また、普段 iMac を使っているので ssh で Windows のノートパソコンにログインして作業できるようにした。これでほとんど macOS 上と同じような感覚で作業ができるようになった。

これにより gettext のライブラリがビルドできない問題に対して取り組めるようになったのだが、それ以前の問題が多く発生している。プロジェクトが依存しているライブラリのほとんどが何かしらの原因でビルドできなかった。そのため MSYS では ExternalProject_add を使わないで FIND_PACKAGE が動くようにライブラリを手動でインストールするなどの作業をしている。

CMake はキャッシュの機能があるためパスの設定が残ったままになってしまったりするのでフルビルドを何度も繰り返しており、非常に時間がかかっている。漫画を読みながら作業をしている状態だ。

問題が山積みの Windows 版を無事ビルドできるのか不安だ。

応援してくださると嬉しいです。よろしくお願いいたします!