Windowsにおけるlibjxlのビルド環境構築
前提
執筆時点: 2023/03
libjxlのバージョン: 0.8.1
筆者のOS: Windows 10 22H2 (22621.1413)
CPU: Intel(R) Core(TM) i7-8750H
メモリ: 16.0GB
環境構築
Visual Studio 2022 v17.5.2をVisual Studio Installerからインストールします。
C++によるデスクトップ開発のワークロードを忘れないようにします。
適当な開発用フォルダ(私はD:\Sourcesにしている)において
git clone https://github.com/libjxl/libjxl
cd libjxl
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
Windowsで開発する場合vcpkgが必須。
vcpkgのインストール先はマシングローバルにインストールするならばC:\src\vcpkg
となりますが、ソリューション固有にインストールするならば$(SolutionDir)vcpkg
とすることをおすすめします。実際の所任意のパスにインストール可能ではあるのですがね。
version specificな環境構築
これは私のようにv0.8.1のdllをベースにカスタマイズをする必要があるとかいう人のための項目です。
git fetch
git branch -a
例としてv0.8.xというブランチがありますので、git checkout -t origin/v0.8.x
としてスイッチします。
git submodule
git submodule foreach git fetch --unshallow
git submodule update --init --recursive
サブモジュールでドツボにハマることがあるので気を付けましょう。
私の事例ではbrotlicommon-static
が見当たらないよ!とエラーが出ました。
vcpkgのインストール
まずはdoc/developing_in_windows_vcpkg.md
に従って依存ライブラリをインストールしてみてください。
mainブランチで作業しているならば多分それで十分うまくいくと思います。
targetがないというエラーをCMakeが出力した人のための節
vcpkgがインストールしてくるパッケージは常に最新版です。サブモジュールやlibjxl本体が依存しているバージョンをインストールしなければいけません。
エラーに関連しているthird_partyフォルダの下のサブモジュールのCMakeLists.txtを読んで指定すべきバージョンを割り出しましょう。
そしてそのバージョンをvcpkg.jsonに指定しましょう。
独自プロジェクト追加
ここからは私が勝手にdllを付け足していった際の記録です。特に役立つことはないと思います。