Windows11環境のMSYS2でQtのビルド環境を導入してAnimeEffectsをビルドした話

コンピュータ
AnimeEffectsという静止画から動画を作成するキーフレームアニメーション作成ソフトを使っているのですが、Windows11でソースからビルドする環境を作ろうと思います。
GitHub - AnimeEffectsDevs/AnimeEffects at v1.5.2
2D Animation Tool. Contribute to AnimeEffectsDevs/AnimeEffects development by creating an account on GitHub.

AnimeEffectsは使われている言語がC++でGUIなどを構成するツールキットがQtとのこと。
Qtのバージョンは5らしいのですが、現行サポートされているQtのバージョンが6だったりします。
QtCreatorというIDEを使ってビルドすることが推奨されていたので、Qtの日本語サイトからインストーラーをダウンロードしてインストールしてみます。
Qt | ソフトウェア開発ライフサイクルの各ステージに対応するフレームワーク
クロスプラットフォーム開発向けのソフトウェアアプリケーションや組み込みデバイスの製造に必要な、企画・設計から開発・テスト、そして将来的な変更にも対応したツールのすべてを提供します。

ここで気になるのがインストールされるQtのバージョンは現行の6のはずですので、ビルドしようとしているプロジェクトには新しすぎる点です。うまくいかない場合古いバージョンを探すつもりで試してみました。

結果としてうまくいかなかったのですが、ビルド時ヘッダーファイルが見つからないエラーが1か所。こちらは懸念していたQt5とQt6の違いが原因のようですが、ヘッダーファイルが別の場所に存在するのでソースプログラムを一部書き換えて対応しました。
次にMakefileでエラーが発生していました。このあたりで筆者のスキルでは手に負えないので導入撤退を視野に入れた思考が頭の中を駆け巡ります。
ログを見るとファイルのコピーでエラーが発生しているように見えます。cp -f /C/Users/karet...が失敗しましたとのこと。コピーの文の内容をPowerShellにコピーして実行したところ、cp(Copy-Item)の-fパラメタが-forceと-filterの二通りの解釈があるので曖昧であるとのエラーでした。
???Makefileはビルド時に生成しているのにPowerShellというかWindows環境があっていないような感じがします。ただWindows用のIDE(QtCreator)をインストールしていてそのあたりの設定が必要であるとは考えにくい。
とりあえずMakefileの内容をcp -Forceに書き換えて実行すると同じコピー部分で別のエラーが発生しており、今度はパスが存在しないとのことでした。
パスは存在しており、パスを見ると/C/Users/...とWindowsのパス表記ではなく/(ルート)から始まるUNIX系のパス表記である点に気が付きました。やはりWindows向けのMakefileではない感じです。
ネット検索してもそれらしい情報もなくほぼお手上げ状態になりました。一晩寝て次の日MSYS2からQtCreatorをインストールすれば問題解決するのではないかと思いつきました。

MSYS2のインストール

Windowsのアプリケーションのパッケージマネージャのscoopを使っていますので、そちらにMSYS2が無いか調べたらありましたのでscoopからMSYS2をインストールします。

scoop install MSYS2

pacmanでパッケージをインストール

powershellからmsys2と入力しmsys2起動します。
msys2が起動しましたらpacmanというmsys2のパッケージマネージャを使って開発に必要なパッケージをインストールします。

pacman -Syu
pacman -Sy
pacman -Su
pacman -S base-devel
pacman -S mingw-w64-x86_64-toolchain
pacman -S mingw-w64-x86_64-clang
pacman -S mingw-w64-x86_64-cmake
pacman -S mingw-w64-x86_64-qt5
pacman -S mingw-w64-x86_64-qt-creator

環境変数のPathに各種binを追加

QtCreatorでプロジェクトをビルド

AnimeEffectsのプロジェクトを読み込みビルドを実行したところ今度は成功しました。

実行したところ見慣れたAnimeEffectsと見た目が異なります。

バージョンが異なるようで、いつも使っているバージョンが1.3.4で今回のソースコードは1.5.2の物だったようです。

開発者の方が変わられているようですがアップデートが期待できることは利用者として大変喜ばしいです。

msys2だったりmingwだったり役割がイマイチ理解できていなかったり、scoopだったりpacmanだったりとパッケージマネージャを複数使うと嫌な予感がしたりしますが、とりあえず目的を果たすことが出来たので良しとします。

追記:
1.5.2はエクスポートで動画書き出しが失敗、レガシーエクスポートは成功ですのでとりあえず使えそう。
1.3.2のビルドは出来ましたがツール類の項目に自由変形のアイコンが無いので使える状態ではない。

コメント