Open6

Windowsにおけるlibjxlのビルド環境構築

スーギ・ノウコ自治区スーギ・ノウコ自治区

環境構築

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を付け足していった際の記録です。特に役立つことはないと思います。