kritaのWindows環境でのソースコードからビルドする方法

(工事中の記事です)
実際の作業の録画です
https://youtu.be/muyjl86geWU

オープンソースのペイントソフト(筆圧感知が有効なデバイスの使用ができる画像編集ソフトのことです)で現在2023年も開発が高頻度で行われているkritaというアプリケーションをソースコードからビルドしてみようという記事です。
Linux版やMac版に関しては環境構築がパッケージマネージャがついてる分わかりやすいし
(足りないパッケージをapt install パッケージ名ですぐインストールできるから)
既に日本語版でも記事を書いてる人が多いので私はWindows版のビルド手順の日本語版の記事を書こうと思います

公式サイト
https://krita.org/jp/

公式の開発ソースブランチ(githubは同じソースあるけどアーカイブみたいな扱いです)
https://invent.kde.org/graphics/krita

公式のビルドOS別ビルド方法が紹介された記事(英語のみ)
https://docs.krita.org/en/untranslatable_pages/building_krita.html
(この中にWindows版のビルド方法が書かれててバージョンアップの度にやり方が更新されるので要チェック)

ざっくりいうと
1　コンパイラやその補助ツールをバージョンを合わせてインストールする
2　環境変数を不用意に汚すのはアレなのでバッチファイルでコンパイラ等の絶対パスを通す
3　Windowsの端末にはコマンドプロンプトぐらいしかないのでステップごとに2のバッチファイルで環境変数一時的に指定してから段階ごとにビルドコマンド打つ

の流れになります、他OSと違いどうしても手動で操作するハメになる箇所がいくつかあるので気をつけましょう
いや他のOSでも完全に自動化するならjenkinsなど自動化ツールを使いますが...

ビルド後はやはり環境変数が通ってないのでバッチファイルでいちいち指定する必要があるのでアプリ単体で起動できるようにポータブル版のバイナリをパッケージ用のバッチファイルで作成します。

これだけだとやはりプログラミングには興味がないユーザーが使用するには不便なので、
最終的にポータブル版を元にインストーラにまとめて一般アプリと同様にインストール・アンインストールができるようにします

linux版では公式ドキュメントにflatpak作成までの流れがちゃんと解説されていますがWindows版に関してはインストーラ作成に関して一切書かれていないのでその情報を共有できたら盛り上がるだろうなと思ってこの記事書いてます


ビルド方法

予めインストールするもの
Git(特に指定はないので最新版で大丈夫です)

python3.10(小数点以下第一位が違うとビルドが途中で失敗したりするので合わせましょう)

LLVM MinGW コンパイラ
(LLVM/Clangではないので間違えないようにしましょう、上記のhttps://docs.krita.org/en/untranslatable_pages/building_krita.html
のWindowsBuildのページにダウンロードリンクがあるので解凍したフォルダをCドライブにコピーしてエクスプローラなどで配置されたフォルダの控えを取ってください)
https://github.com/mstorsjo/llvm-mingw/releases/
からでもバージョンを選んでダウンロードできますが注意点が一つ有って、
必ずucrt-x86_64を選択するようにしてください、
一見Windowsなのでmsvcrt-x86_64でもいけそうだと思われますがWindowsSDKが10(ucrt-x86_64推奨)なのとkrita自体がサードパーティ製のライブラリを多用してるのでビルド時に途中でエラー吐いて失敗する確率が上がります
参考
https://qiita.com/syoyo/items/36935d8231c6ebd41262

CMake 3.16.0
(最小バージョンなのでこれより新しいバージョンをインストールしてください、Windows x64 Installerがインストールもアンインストールも楽なのでおすすめです)

Ninja
(最近追加されたやつでLLVM MINGW同様にzipフォルダを解凍してCドライブにコピーしてフォルダのパスの控えを取ってください、GitHubのReleaseページで配布されてるので注意、Windows版を選びましょう、ninja-win.zipって書いてるやつです)

Windows10 SDK
(単体でもインストールできますがVisual StudioのVisualC++をインストールする際にオプションのセットでインストールできて、更新やアンインストールもできるので後者のやり方がおすすめです、Windows11のVisual Studio2022環境でもWindows10 SDKをインストールできます)

Qt Creator
(Qtのインストール時にセットされてインストールされますがQt Creator以外は不要なのでチェックを外しましょう、そうしないと使わないモジュールのダウンロードとインストールで何時間も溶かす羽目になります。インストール時に会員登録が必須なので予めアカウントを作成しておきましょう、インストール前の質問が全部英語でいくつもあるので Qt インストール で調べながらやるといいでしょう)

バッチファイルの作成

最初にドキュメントフォルダ等で普通の空のテキストファイル(.txtの拡張子)を作成してから記述してメモ帳などを使用して公式ドキュメントに乗ってるテンプレートを元にバッチファイルを書きます

202305時点のテンプレート

set MINGW_BIN_DIR=C:\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin
set CMAKE_BIN_DIR=C:\Program Files\CMake\bin
set NINJA_BIN_DIR=C:\krita-dev\ninja
set PYTHON_BIN_DIR=C:\Python38
set QTCREATOR_DIR=C:\Qt\Tools\QtCreator\bin

set BUILDROOT=C:\krita-dev
set PATH=C:\krita-dev\i\bin;C:\krita-dev\i\lib;%MINGW_BIN_DIR%;%MINGW_BIN_DIR%\..\x86_64-w64-mingw32\bin;%CMAKE_BIN_DIR%;%NINJA_BIN_DIR%;%QTCREATOR_DIR%;%PATH%

そのままだと使えません、コンパイラなどがインストールされてるフォルダをエクスプローラでひらいて、エクスプローラのウェブブラウザのURL欄みたいな上のバーをマウスでクリックするとディレクトリ(フォルダのパスが表示されて選択された状態になるので、そこから右クリックしてメニューからコピーして控えをとりましょう、それを上記のバッチファイルのパスにペーストして書き換えてください)

私の環境だとこんな感じになりました

set WindowsSdkDir=%ProgramFiles(x86)%\Windows Kits\10
set WindowsSdkVerBinPath=%ProgramFiles(x86)%\Windows Kits\10\bin\10.0.18362.0

set MINGW_BIN_DIR=C:\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin
set CMAKE_BIN_DIR=C:\Program Files\CMake\bin
set NINJA_BIN_DIR=C:\Program Files\CMake\bin
set PYTHON_BIN_DIR=C:\Users\quinella\AppData\Local\Programs\Python\Python310
set QTCREATOR_DIR=C:\Qt\Tools\QtCreator\bin
set BUILDROOT=C:\krita-dev

set PATH=C:\krita-dev\i\bin;C:\krita-dev\i\lib;%MINGW_BIN_DIR%;%MINGW_BIN_DIR%\..\x86_64-w64-mingw32\bin;%CMAKE_BIN_DIR%;%NINJA_BIN_DIR%;%QTCREATOR_DIR%;%PATH%

cmakeはインストーラでインストールするとC:\Program Filesにインストールされます。
PythonはユーザーフォルダにインストールされるのでC:\Users\ユーザー名\AppData\Local\Programs\Python\Python310になり、要修正です。
ninjaは私は面倒なのでninja.exeをcmakeと同じフォルダに入れてます
(C:\Program Files\CMake\bin)
WindowsSDKはインストールされていれば環境変数のパスが通ってると思いますが念のため追記してます。
書き終わったら保存して拡張子を.txtから.batに変更すればバットファイルとして使えます。