Windows/jp: Difference between revisions

From RawPedia
Jump to navigation Jump to search
No edit summary
No edit summary
 
Line 1: Line 1:
<div class="pagetitle">Windows</div>
<div class="pagetitle">Windows</div>
 以下は、[https://www.msys2.org MSYS2]のビルド環境を使ってWindows版のRawTherapeeをコンパイルする解説です。カスタマイズとビルド行程の理解には[[Linux/jp]の項を参照して下さい。


 本項は'''Windows'''システムでRawTherapeeをコンパイルする説明をしています。[[Linux/jp|Linux]]と[[macOS/jp|macOS]]でコンパイルする説明は別項にあります。ここにはコンパイルの際に'''何を'''、'''どうするのか'''という詳細が書かれています。'''何故'''及びこれらコマンドの説明、ディペンデンシーのリスト、CMakeオプション、その他の情報に関しては、[[Linux/jp| Linux]] を参考にして下さい。
 注意1:以下の説明は、'''Windows7以降の新しいWindows''''''64ビット'''バージョンでRawTherapeeをコンパイルするためのものです。32ビットバージョンのコンパイル、及びWindows7より前のWindows版のビルドサポートは終わりました。最後に作られた32ビットWindows XPビルドは5.0-rc1です。[http://www.rawtherapee.com/downloads/5.0-r1/ here]からダウンロード出来ます。


 ソースコードのクローン作成、ブランチの選択、CMakeの設定、実際のコンパイル手順も、やはりLinuxの説明文を参考にします。以下はWindowsのコンパイルに関する追加事項です。
 注意2:RawTherapeeのコンパイルには、[https://gitlab.gnome.org/GNOME/gtk/issues/760#note_110809 Windowsのサポート]をしているバージョン3.22.24以上のGTK+も必要です。これが無いと、RawTherapeeのインターフェイスで、Windows10のタスクバーが最大化されて表示されるような、[https://github.com/Beep6581/RawTherapee/issues/4125 問題]が生じます。ビルド環境を更新すれば、こうした問題は起こりません。


 RawTherapeeのコンパイルにはGTK+のバージョン3.22.24以上が必要です。このバージョンは元々Windowsをサポートするための最初のバージョン[https://gitlab.gnome.org/GNOME/gtk/issues/760#note_110809 patched]なので、バージョン要件が満たされていないと、Windowd10の場合、ウィンドウのタスクバーが [https://github.com/Beep6581/RawTherapee/issues/4125 最大表示]されるなどの異常な表示になってしまいます。
== MSYS2のインストール ==
 
=== MSYS2の基本システムをインストール ===
 GTK+2をサポートし、WindowsXPとの互換性のあるRawTherapeeの最後のバージョンは、2017年2月2日にリリースされた5.0-r1-gtk2です。
 以下の説明に従って、MSYS2のビルド環境を[https://www.msys2.org MSYS2ウェブサイト]からインストールします。それが最新バージョンであることを確認して下さい。以下のコマンドを使います。
<pre style="white-space: pre-wrap">
$ pacman -Syu
</pre>


== MSYS2のインストール ==
 MSYS2は異なる目的を持つ、'''MSYS''', '''MinGW 32-bit'''、'''MinGW 64-bit''' という[https://www.msys2.org/wiki/MSYS2-introduction/ 3つのシェル] (コマンドラインインターフェイス)を提供しています。それぞれスタートメニューのショートカットを使って起動できます。PCのOSが64ビットであれば、それに最も適したアプリケーションをビルドすべきなので、'''MSYS2 MinGW 64-bit'''のシェルを使います。
=== MSYS2の基本システムをインストールする ===
 まず、[http://www.msys2.org/ MSYS2 website]からの以下の説明に従ってMSYS2を更新します。最新版が手に入るまでは次の様にMSYS2の基本システムを更新します:
<pre>$ pacman -Syu</pre>
インストールの最後に、次の3つのシェルが手に入ります:
*MSYS2シェル:コアのシステムを開発するのと、MSYS2アプリケーションを管理する(主にMSYS2パッケージの更新)ために使われるものです。
*MINGW64シェル:64ビットアプリケーションをビルドするための環境を提供します。
*MINGW32シェル:32ビットアプリケーションをビルドするための環境を提供します。


[[File:MSYS2_Shell.jpg]]
[[File:MSYS2 Shell.jpg]]


 注意: 以下の<code><MSYS2></code> テキストはMSYS2インストールフォルダーです。
 注意:テキストの中の<code><MSYS2></code>はMSYS2のインストールフォルダのことを指します。通常は<code>C:\msys64</code>です。


=== ツールとライブラリーをインストール ===
=== ツールとライブラリーをインストール ===
 MSYS2のパッケージマネジャーはpacmanです。 詳しくは [https://wiki.archlinux.org/index.php/pacman pacmanマニュアル] を参照して下さい。  
 MSYS2はソフトウェアや構成要素をインストールするためにパッケージマネジャー<code>pacman</code>を使います。詳しくは、[https://wiki.archlinux.org/index.php/pacman pacmanマニュアル]を参照して下さい。
 MSYS2シェルには:
初めに、幾つか細かいツールをインストールします:
 初めに、幾つか細かいツールをインストールします:
<pre>$ pacman -S tar gzip nano make diffutils intltool git</pre>
<pre>$ pacman -S tar gzip nano make diffutils intltool git</pre>
次に必要な開発ツールをインストールします:
 
<pre>
 次に必要な開発ツールとライブラリーをインストールします:
# win32
 
$ pacman -S mingw-w64-i686-gcc mingw-w64-i686-gdb mingw-w64-i686-make mingw-w64-i686-pkg-config mingw-w64-i686-cmake
<pre style="white-space: pre-wrap">
# win64
$ pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-gdb mingw-w64-x86_64-make mingw-w64-x86_64-pkg-config mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja mingw-w64-x86_64-gtkmm3 mingw-w64-x86_64-lcms2 mingw-w64-x86_64-fftw mingw-w64-x86_64-lensfun
$ pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-gdb mingw-w64-x86_64-make mingw-w64-x86_64-pkg-config mingw-w64-x86_64-cmake
</pre>
</pre>
必要なライブラリーをインストールします:
 
<pre>
===Lensfunデータベースの更新===
# win32
 RawTherapeeはレンズに起因する問題の補正に、[https://lensfun.github.io Lensfun]のライブラリーを使います。以下のコマンドでデータベースを更新します:
$ pacman -S  mingw-w64-i686-gtkmm3 mingw-w64-i686-lcms2 mingw-w64-i686-fftw mingw-w64-i686-lensfun  
<pre style="white-space: pre-wrap">
# win64
$ lensfun-update-data
$ pacman -S  mingw-w64-x86_64-gtkmm3 mingw-w64-x86_64-lcms2 mingw-w64-x86_64-fftw mingw-w64-x86_64-lensfun
</pre>
</pre>
=== 適用可能なバージョンのパッケージを取得する ===
MSYS2はパッケージを断続的にリリースしているので、新しいバージョンのパッケージに中には現在のRawTherapeeと互換性がないものが存在する可能性があります。
 以下はダウンロードする必要のあるパッケージのリストです:
<pre>
mingw-w64-x86_64-lensfun-0.3.2-4-any.pkg.tar.xz
mingw-w64-x86_64-libjpeg-turbo-1.5.3-1-any.pkg.tar.xz
</pre>
もしも、パッケージが<MSYS2>\var\cache\pacman\pkgの中になければ、次に示すリンクからダウンロード出来ます。
この時、MSYS2の中の各ファイルは:
<pre>Pacman -U <path-to-files>/mingw-w64-x86_64-...</pre>
Pacmanがパッケージを更新しないよう、<MSYS2>\etc\pacman.confに以下を追加します。
<pre>
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
IgnorePkg = mingw-w64-x86_64-libjpeg-turbo
IgnorePkg = mingw-w64-x86_64-lensfun
</pre>
32ビットバージョンをビルドする場合は、上記の作業でx86_64をi386に置き換えて行います。
=== MSYS2の基本システムとアプリケーションパッケージを更新する ===
MSYS2のシェルの中は:
<pre>$ pacman -Syuu</pre>
=== Lensfunのデータベースを更新 ===
<code><mingw32|mingw64>\lib\python3.6\site-packages</code>から<code>lensfun</code>フォルダーと<code>lensfun-0.3.2-py3.6.egg-info</code>ファイルをコピーし、<code><mingw32|mingw64>\lib\python3.<version>\site-packages</code>に貼り付けます。
上記の中の<vesion>はインストールされたPython3のバージョンのことです。
Mingw32或いはMingw64シェルには以下が入ります:
<pre>$ lensfun-update-data</pre>


== libiptcdataのダウンロードと作成 ==
 アップデータが更新されたデータベースのある場所にパスを返します。'''このパスは後で使うので何処かにコピーしておいて下さい。'''
 32ビットバージョンをビルドする人は“MinGW32シェル”を、64ビットバージョンをビルドする人は“MinGW64”を使います。
 
libiptcdataライブラリーはMSYS2から提供されないので、自身でダウンロードし以下を使って作成します:
===ダウンロードとlibiptcdataの構築===
<pre>
必要な<code>libiptcdata</code>のライブラリーはMSYS2から提供されていないので、手動で構築します。
<pre style="white-space: pre-wrap">
$ cd ~
$ curl -LO http://downloads.sourceforge.net/project/libiptcdata/libiptcdata/1.0.4/libiptcdata-1.0.4.tar.gz
$ curl -LO http://downloads.sourceforge.net/project/libiptcdata/libiptcdata/1.0.4/libiptcdata-1.0.4.tar.gz
$ tar xzf libiptcdata-1.0.4.tar.gz
$ tar xzf libiptcdata-1.0.4.tar.gz
$ cd libiptcdata-1.0.4
$ cd libiptcdata-1.0.4
# win32
$ ./configure --prefix=/mingw32
# win64
$ ./configure --prefix=/mingw64
$ ./configure --prefix=/mingw64
</pre>
</pre>
 その後で、<code>Makefile</code>を開き、テキストエディターを使って、<code>SUBDIRS</code>と<code>DIST_SUBDIRS</code>という名前のリストから<code>iptc</code>と <code>docs</code>を削除します。そうしないとインストールとビルドが失敗します。
<pre>
$ nano -m Makefile


# search (command ctrl/W)
 結果として得られる<code>Makefile</code>には幾つか変更が必要です。ファイルの編集はどのエディターを使っても出来ますが(例、貴方のOSにあるエディター、またはシェルに付属しているエディター)、ここでは、シェルに付属している<code>nano</code>エディターを使った編集を解説します:
<pre style="white-space: pre-wrap">
$ nano Makefile
 
# search (command Ctrl+W)
DIST_SUBDIRS = m4 libiptcdata po iptc docs win python
DIST_SUBDIRS = m4 libiptcdata po iptc docs win python
# and replace with
# and replace with
Line 94: Line 63:
SUBDIRS = m4 libiptcdata po win $(MAYBE_PYTHONLIB)
SUBDIRS = m4 libiptcdata po win $(MAYBE_PYTHONLIB)


# save
# save and quit
ctrl/O
Ctrl+X, Y
</pre>


# quit
 最後にライブラリーをビルドしてインストールします:
ctrl/X
<pre style="white-space: pre-wrap">
$ make install
</pre>
</pre>
 最後に、ライブラリーを作成してインストールします:
 
<pre>
==クローンとRawTherapeeのビルド==
$ make
===RawTherapeeのGitレポジトリのクローン===
$ make install
[https://github.com/Beep6581/RawTherapee 公式GitHubレポジトリ]からRawTherapeeのソースコードのクローンを作ります。
$ cd
<pre style="white-space: pre-wrap">
$ cd ~
$ git clone git://github.com/Beep6581/RawTherapee.git
$ cd RawTherapee
</pre>
</pre>


== RawTherapeeのクローンとビルド ==
===ブランチを替える===
 32ビットバージョンをビルドする人は“MinGW32シェル”を、64ビットバージョンをビルドする人は“MinGW64”を使います。
 クローンが作成されると、自動的に<code>dev</code>ブランチが作られます。これが貴方の使うメインのRawTherapeeの開発用ブランチになりますが、これを[https://github.com/Beep6581/RawTherapee/branches異なるブランチ]に変える場合は以下のコマンドを使います:
=== RawTherapeeのGitリポジトリーのクローン ===
<pre style="white-space: pre-wrap">
 ビルドフォルダーのパスの中にスペース文字があると、ビルドが失敗します。例えば、Windowsのユーザーネームが“Zank Frappa”だとすると、そのホームパスはC:¥Users¥Zank Frappa¥ですが、その中にRawTherapeeのクローンを入れるとコンパイル中にビルドが失敗するでしょう。単純に、フォルダーにも親フォルダーの名前の中にスペースが入っていないフォルダーにクローンを入れます。例えば、C:¥code\repo-rtのように。
$ git checkout branchname # replace with another available branch name
<pre>
$ git clone http://github.com/Beep6581/RawTherapee.git /c/code/repo-rt
$ cd /c/code/repo-rt
</pre>
</pre>
 リポジトリーのクローンを作ると自動的に<code>dev</code>ブランチに入りますが、これを手動で行う場合は次を使います:
 
<pre>$ git checkout dev</pre>
===ビルドのために独立したディレクトリを作成===
=== ビルドのために別のディレクトリーを作成===
 アプリケーションを構築するために、新しいディレクトリを作る必要があります。ディレクトリの名前は何でも構いません、例えば:
<pre>
<pre style="white-space: pre-wrap">
$ mkdir build
$ mkdir build
$ cd build
$ cd build
</pre>
</pre>
 ビルドのブランチを変更する際には、新しい空のフォルダーを使って初めからコンパイルするため、それまでの<code>ビルド</code>ファルダ―を必ず削除します。そうしないと恐らくコンパイルに失敗するでしょう。但し、ブランチを変更せずにビルドを更新するだけであれば、空のフォルダーから始める必要はなく、既存のフォルダーが使えるので、速くコンパイルすることが出来ます。


=== CMakeとMakeを起動 ===
 注意:ブランチを替えた場合は、問題発生を防ぐため、常に空のディレクトリを作っておいて下さい。そのためにビルドディレクトリの中のファイルを全て削除するには、<code>rm -rf *</code>を使います。
<pre>
 
$ cmake -G "MSYS Makefiles" -DLENSFUNDBDIR=share/lensfun -DCMAKE_BUILD_TYPE="release" -DPROC_TARGET_NUMBER="2" -DCACHE_NAME_SUFFIX="5-dev" ..
===構成とコンパイル===
$ make install
 貴方のPCの構造に最も適したビルドを作成するために、以下のコマンドを使います:
<pre style="white-space: pre-wrap">
$ cmake -G "Ninja" -DLENSFUNDBDIR=put/your/lensfun/directory/here -DCMAKE_BUILD_TYPE="release" -DPROC_TARGET_NUMBER="2" -DCACHE_NAME_SUFFIX="5-dev" ..
$ cmake --build . --target install
</pre>
 
 必ず、Lensfunのデータベースへのパスを、ソースププログラムの数ステップ前に取得したパスに差し替えます。様々なオプションの詳細を知りたい場合は、[[Linux/jp#CMake|Linux]]の項を参照して下さい。貴方のPCのシステムにもよりますが、ビルドにはおよそ5分~25分の時間がかかります。
 
 ビルドの作成中に警告が出ることがあるかもしれませんが、それらは無視して構いません。本解説に従ってビルドの作成を行って、誤入力以外の要因でエラーが発生した場合は、[https://github.com/Beep6581/RawTherapee/issues/new?assignees=&labels=&template=bug_report.md&title= ここ]に報告して下さい。
 
===RawTherapeeを起動する===
 以上でRawTherapeeを起動することが出来ます:
<pre style="white-space: pre-wrap">
$ ./release/rawtherapee.exe # replace release with debug or relwithdebinfo if you built another target
</pre>
 
=== オプション:予めCMakeのcacheを読み込む ===
[https://cmake.org/cmake/help/latest/manual/cmake.1.html CMakeのマニュアル]で以下の様に解説されています。
<pre style="white-space: pre-wrap">
-C <initial-cache>
 
    Pre-load a script to populate the cache.
 
    When cmake is first run in an empty build tree, it creates a CMakeCache.txt file and populates it with customizable settings for the project. This option may be used to specify a file from which to load cache entries before the first pass through the project’s cmake listfiles. The loaded entries take priority over the project’s default values. The given file should be a CMake script containing SET commands that use the CACHE option, not a cache-format file.
</pre>
</pre>
 "BUILD_TYPE"のオプションを含む様々なCMakeのオプションの説明は、Linuxでのコンパイルの項を参照して下さい。
 
 32ビットWindowsのrelease或いはrelwithdebinfoバージョンを作成する場合は、上記CMakeのコマンドの2つのドット..の前に、<code>-mstackrealign</code>というコンパイラフラッグを追加する必要があります。
 CMakeの起動を簡素化し、Windows特有のオプションを簡単に定義できるようにするために、ソースの中に<code>win.cmake</code>テンプレートスクリプトがあります。<code>mywin.cmake</code>の更新などにより、上書きされてしまうことを避けるためRawTherapeeのソースからコピーします。
<pre>-DCMAKE_C_FLAGS="-mstackrealign" -DCMAKE_CXX_FLAGS="-mstackrealign"</pre>
<pre style="white-space: pre-wrap">
 これでMINGW64のコマンドラインを使ってRawTherapeeのビルドが始められます:
$ cmake -G "Ninja" -DLENSFUNDBDIR=share/lensfun -DCMAKE_BUILD_TYPE="release" -DPROC_TARGET_NUMBER="2" -DCACHE_NAME_SUFFIX="5-dev" -C <path/to/mywin.cmake> ..
<pre>
# for debug builds
$ cd debug
# for release builds
$ cd release
# for relwithdebinfo builds
$ cd relwithdebinfo
$ ./rawtherapee.exe
</pre>
</pre>


== RawTherapeeと必要なDLLをコピーする ==
==バンドルビルドを作成する==
 DLLは、Windowsのファイルマネジャー、或いは<mingw32|mingw64>シェルスクリプトの中にあるrobocopyのinstead of / for the optionsを使って(推奨)コピー出来ます。
 以下は、RawTherapeeをMinGWシェル以外で起動する、もしくはそのビルドを配布する場合の解説です。
フォルダーの定義は:
 
*<code><prefix></code> is<code><MSYS2>\<mingw32|mingw64>,</code>
 注意:Windowsのファイルマネジャーでもコピー出来ますが、<code>mingw64</code>シェルスクリプトの中の[https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy robocopy] を使い、オプションで<code>/</code>の代わりに<code>-</code>を使って行う方法を奨めます。
*<code><MSYS2></code> is the MSYS2 installation folder,
 
*and<code> .</code> is the RawTherapee installation folder.
===フォルダの定義===
Copy the content of <code>c:\code\repo-rt\build\<debug|release|relwithdebinfo></code> into<code>.</code>.
*<code><prefix></code> <code><MSYS2>\mingw64</code>です
 必要なDLLと実行ファイルを<code><prefix>\bin</code>からコピーします。必要なDLLと実行ファイルは次の通りです:
*<code><MSYS2></code>はMSYS2のインストレーションフォルダです
*<code>.</code>はRawTherapeeのインストレーションフォルダです
 
===RawTherapeeの実行ファイルと生成されたファイルをコピーする===
<code>c:\code\repo-rt\build\<debug|release|relwithdebinfo> into .. </code>の中身をコピーします。
 
===ディペンデンシーのコピー===
 必要なDLLsと実行ファイルを<code><prefix>\bin</code>から <code>. </code>へコピーします。
 
 現在のDLLsと実行ファイルの一覧は以下の通りです:
<pre>
<pre>
gspawn-<win32|win64>-helper.exe
gspawn-win64-helper.exe
gspawn-<win32|win64>-helper-console.exe
gspawn-win64-helper-console.exe
libatk-1.0-0.dll
libatk-1.0-0.dll
libatkmm-1.6-1.dll
libatkmm-1.6-1.dll
Line 169: Line 163:
libfreetype-6.dll
libfreetype-6.dll
libfribidi-0.dll
libfribidi-0.dll
libgcc_s_seh-1.dll (or libgcc_s_dw2-1.dll for W32)
libgcc_s_seh-1.dll  
libgdk_pixbuf-2.0-0.dll
libgdk_pixbuf-2.0-0.dll
libgdk-3-0.dll
libgdk-3-0.dll
Line 236: Line 230:
[Settings] gtk-button-images=1
[Settings] gtk-button-images=1
</pre>
</pre>


== 配布可能なパッケージを作成する ==
== 配布可能なパッケージを作成する ==
 Windowsのプラットフォームに配布可能なRawTherapeeのパッケージを作る場合は、最初のステップとして、“generic”プロセッサをターゲットとしたRawTherapeeをビルドする必要があります。そのためには、CMakeコマンドで<code>-DPROC_TARGET_NUMBER="1" </code>を使います。
 Windowsのプラットフォームに配布可能なRawTherapeeのパッケージを作る場合は、最初のステップとして、“generic”プロセッサをターゲットとしたRawTherapeeをビルドする必要があります。そのためには、CMakeコマンドで<code>-DPROC_TARGET_NUMBER="1" </code>を使います。


 コンパイル中に、<code>WindowsInnoSetup.iss</code>という名前のスクリプトがRawTherapeeのインストーラーフォルダーの中に作成されます。このスクリプトはInno Setup [1]で使われるもので、Windows用プログラムのためのインストーラーを作ります。言語に関する問題発生を避けるため、Unicodeのバージョン[2]をダウンロードすることを奨めます。
 コンパイル中に、RawTherapeeのインストールフォルダに<code>WindowsInnoSetup.iss</code>という名前のスクリプトが作成されます。このスクリプトは、Windowsプログラムのためにインストーラーを作るプログラム、[http://www.jrsoftware.org/isinfo.php Inno Setup]で使われます。 幾つかの言語による問題を避けるために[http://www.jrsoftware.org/download.php/is-unicode.exe ユニコードで書かれたバージョン]のダウンロードを奨めます。


 ユーザーに[[How to write useful bug reports/jp#有効なバグレポートの書き方|バグの報告]]をしてもらうことがあるので、パッケージの管理者には“release”と”debug”の両実行ファイルをビルドし、それらをGDBのデバッガ実行ファイルと共に一まとめにするようお願いします。
 ユーザーに[[How to write useful bug reports/jp#有効なバグレポートの書き方|バグの報告]]をしてもらうことがあるので、パッケージの管理者には“release”と”debug”の両実行ファイルをビルドし、それらをGDBのデバッガ実行ファイルと共に一まとめにするようお願いします。
Line 251: Line 244:


 貴方が作成した新しいパッケージとRawTherapeeウェブサイトのアップロードパネルに互換性を持たせるため、新しく作成されたインストーラーとそれに対応するAboutThisBuild.txtファイルの両方を同じ場所に置くためのzipアーカイブを作って下さい。以下のテンプレーで作成したzipアーカイブに名前を付けます:
 貴方が作成した新しいパッケージとRawTherapeeウェブサイトのアップロードパネルに互換性を持たせるため、新しく作成されたインストーラーとそれに対応するAboutThisBuild.txtファイルの両方を同じ場所に置くためのzipアーカイブを作って下さい。以下のテンプレーで作成したzipアーカイブに名前を付けます:
<code>RawTherapee_<branch>_<version>_WinVista_<32|64>_<buildtype>.zip</code> 
<code>RawTherapee_<branch>_<version>_WinVista_<64>_<buildtype>.zip</code> 
*"WinVista"はWindows10を含むVista以降のどのWindowsバージョンでも動作可能であることを意味します。  
*"WinVista"はWindows10を含むVista以降のどのWindowsバージョンでも動作可能であることを意味します。  
*"version" は貴方が<code>5.2</code>タグと一致させた場合は<code>5.2</code>のように表示され、<code>5.2</code>タグの後に<code>dev</code>ブランチと一致させた場合は、<code>5.2-g1a2b3c4d</code>と表示されます。
*"version" は貴方が<code>5.8</code>タグと一致させた場合は<code>5.8</code>のように表示され、<code>5.8</code>タグの後に<code>dev</code>ブランチと一致させた場合は、<code>5.8-g35abd92</code>と表示されます。
 
 5.8のタグ付けの後に<code>dev</code>をチェックアウトする場合
*一つのインストーラーに複数のビルドを入れる場合は、名前に<buildtype>を入れないで下さい。
*一つのインストーラーに複数のビルドを入れる場合は、名前に<buildtype>を入れないで下さい。

Latest revision as of 02:03, 4 June 2021

Windows

 以下は、MSYS2のビルド環境を使ってWindows版のRawTherapeeをコンパイルする解説です。カスタマイズとビルド行程の理解には[[Linux/jp]の項を参照して下さい。

 注意1:以下の説明は、Windows7以降の新しいWindows64ビットバージョンでRawTherapeeをコンパイルするためのものです。32ビットバージョンのコンパイル、及びWindows7より前のWindows版のビルドサポートは終わりました。最後に作られた32ビットWindows XPビルドは5.0-rc1です。hereからダウンロード出来ます。

 注意2:RawTherapeeのコンパイルには、Windowsのサポートをしているバージョン3.22.24以上のGTK+も必要です。これが無いと、RawTherapeeのインターフェイスで、Windows10のタスクバーが最大化されて表示されるような、問題が生じます。ビルド環境を更新すれば、こうした問題は起こりません。

MSYS2のインストール

MSYS2の基本システムをインストール

 以下の説明に従って、MSYS2のビルド環境をMSYS2ウェブサイトからインストールします。それが最新バージョンであることを確認して下さい。以下のコマンドを使います。

$ pacman -Syu

 MSYS2は異なる目的を持つ、MSYS, MinGW 32-bitMinGW 64-bit という3つのシェル (コマンドラインインターフェイス)を提供しています。それぞれスタートメニューのショートカットを使って起動できます。PCのOSが64ビットであれば、それに最も適したアプリケーションをビルドすべきなので、MSYS2 MinGW 64-bitのシェルを使います。

MSYS2 Shell.jpg

 注意:テキストの中の<MSYS2>はMSYS2のインストールフォルダのことを指します。通常はC:\msys64です。

ツールとライブラリーをインストール

 MSYS2はソフトウェアや構成要素をインストールするためにパッケージマネジャーpacmanを使います。詳しくは、pacmanマニュアルを参照して下さい。

 初めに、幾つか細かいツールをインストールします:

$ pacman -S tar gzip nano make diffutils intltool git

 次に必要な開発ツールとライブラリーをインストールします:

$ pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-gdb mingw-w64-x86_64-make mingw-w64-x86_64-pkg-config mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja mingw-w64-x86_64-gtkmm3 mingw-w64-x86_64-lcms2 mingw-w64-x86_64-fftw mingw-w64-x86_64-lensfun

Lensfunデータベースの更新

 RawTherapeeはレンズに起因する問題の補正に、Lensfunのライブラリーを使います。以下のコマンドでデータベースを更新します:

$ lensfun-update-data

 アップデータが更新されたデータベースのある場所にパスを返します。このパスは後で使うので何処かにコピーしておいて下さい。

ダウンロードとlibiptcdataの構築

必要なlibiptcdataのライブラリーはMSYS2から提供されていないので、手動で構築します。

$ cd ~
$ curl -LO http://downloads.sourceforge.net/project/libiptcdata/libiptcdata/1.0.4/libiptcdata-1.0.4.tar.gz
$ tar xzf libiptcdata-1.0.4.tar.gz
$ cd libiptcdata-1.0.4
$ ./configure --prefix=/mingw64

 結果として得られるMakefileには幾つか変更が必要です。ファイルの編集はどのエディターを使っても出来ますが(例、貴方のOSにあるエディター、またはシェルに付属しているエディター)、ここでは、シェルに付属しているnanoエディターを使った編集を解説します:

$ nano Makefile

# search (command Ctrl+W)
DIST_SUBDIRS = m4 libiptcdata po iptc docs win python
# and replace with
DIST_SUBDIRS = m4 libiptcdata po win python

# search
SUBDIRS = m4 libiptcdata po iptc docs win $(MAYBE_PYTHONLIB)
# and replace with
SUBDIRS = m4 libiptcdata po win $(MAYBE_PYTHONLIB)

# save and quit
Ctrl+X, Y

 最後にライブラリーをビルドしてインストールします:

$ make install

クローンとRawTherapeeのビルド

RawTherapeeのGitレポジトリのクローン

公式GitHubレポジトリからRawTherapeeのソースコードのクローンを作ります。

$ cd ~
$ git clone git://github.com/Beep6581/RawTherapee.git
$ cd RawTherapee

ブランチを替える

 クローンが作成されると、自動的にdevブランチが作られます。これが貴方の使うメインのRawTherapeeの開発用ブランチになりますが、これを[1]に変える場合は以下のコマンドを使います:

$ git checkout branchname # replace with another available branch name

ビルドのために独立したディレクトリを作成

 アプリケーションを構築するために、新しいディレクトリを作る必要があります。ディレクトリの名前は何でも構いません、例えば:

$ mkdir build
$ cd build

 注意:ブランチを替えた場合は、問題発生を防ぐため、常に空のディレクトリを作っておいて下さい。そのためにビルドディレクトリの中のファイルを全て削除するには、rm -rf *を使います。

構成とコンパイル

 貴方のPCの構造に最も適したビルドを作成するために、以下のコマンドを使います:

$ cmake -G "Ninja" -DLENSFUNDBDIR=put/your/lensfun/directory/here -DCMAKE_BUILD_TYPE="release" -DPROC_TARGET_NUMBER="2" -DCACHE_NAME_SUFFIX="5-dev" ..
$ cmake --build . --target install

 必ず、Lensfunのデータベースへのパスを、ソースププログラムの数ステップ前に取得したパスに差し替えます。様々なオプションの詳細を知りたい場合は、Linuxの項を参照して下さい。貴方のPCのシステムにもよりますが、ビルドにはおよそ5分~25分の時間がかかります。

 ビルドの作成中に警告が出ることがあるかもしれませんが、それらは無視して構いません。本解説に従ってビルドの作成を行って、誤入力以外の要因でエラーが発生した場合は、ここに報告して下さい。

RawTherapeeを起動する

 以上でRawTherapeeを起動することが出来ます:

$ ./release/rawtherapee.exe # replace release with debug or relwithdebinfo if you built another target

オプション:予めCMakeのcacheを読み込む

CMakeのマニュアルで以下の様に解説されています。

-C <initial-cache>

    Pre-load a script to populate the cache.

    When cmake is first run in an empty build tree, it creates a CMakeCache.txt file and populates it with customizable settings for the project. This option may be used to specify a file from which to load cache entries before the first pass through the project’s cmake listfiles. The loaded entries take priority over the project’s default values. The given file should be a CMake script containing SET commands that use the CACHE option, not a cache-format file.

 CMakeの起動を簡素化し、Windows特有のオプションを簡単に定義できるようにするために、ソースの中にwin.cmakeテンプレートスクリプトがあります。mywin.cmakeの更新などにより、上書きされてしまうことを避けるためRawTherapeeのソースからコピーします。

$ cmake -G "Ninja" -DLENSFUNDBDIR=share/lensfun -DCMAKE_BUILD_TYPE="release" -DPROC_TARGET_NUMBER="2" -DCACHE_NAME_SUFFIX="5-dev" -C <path/to/mywin.cmake> ..

バンドルビルドを作成する

 以下は、RawTherapeeをMinGWシェル以外で起動する、もしくはそのビルドを配布する場合の解説です。

 注意:Windowsのファイルマネジャーでもコピー出来ますが、mingw64シェルスクリプトの中のrobocopy を使い、オプションで/の代わりに-を使って行う方法を奨めます。

フォルダの定義

  • <prefix><MSYS2>\mingw64です
  • <MSYS2>はMSYS2のインストレーションフォルダです
  • .はRawTherapeeのインストレーションフォルダです

RawTherapeeの実行ファイルと生成されたファイルをコピーする

c:\code\repo-rt\build\<debug|release|relwithdebinfo> into .. の中身をコピーします。

ディペンデンシーのコピー

 必要なDLLsと実行ファイルを<prefix>\binから . へコピーします。

 現在のDLLsと実行ファイルの一覧は以下の通りです:

gspawn-win64-helper.exe
gspawn-win64-helper-console.exe
libatk-1.0-0.dll
libatkmm-1.6-1.dll
libbz2-1.dll
libcairo-2.dll
libcairo-gobject-2.dll
libcairomm-1.0-1.dll
libcroco-0.6-3.dll
libdatrie-1.dll
libepoxy-0.dll
libexpat-1.dll
libffi-6.dll
libfftw3f-3.dll
libfontconfig-1.dll
libfreetype-6.dll
libfribidi-0.dll
libgcc_s_seh-1.dll 
libgdk_pixbuf-2.0-0.dll
libgdk-3-0.dll
libgdkmm-3.0-1.dll
libgio-2.0-0.dll
libgiomm-2.4-1.dll
libglib-2.0-0.dll
libglibmm-2.4-1.dll
libgmodule-2.0-0.dll
libgobject-2.0-0.dll
libgomp-1.dll
libgraphite2.dll
libgtk-3-0.dll
libgtkmm-3.0-1.dll
libharfbuzz-0.dll
libiconv-2.dll
libintl-8.dll
libjpeg-8.dll
liblcms2-2.dll
liblensfun.dll
liblzma-5.dll
libpango-1.0-0.dll
libpangocairo-1.0-0.dll
libpangoft2-1.0-0.dll
libpangomm-1.4-1.dll
libpangowin32-1.0-0.dll
libpcre-1.dll
libpixman-1-0.dll
libpng16-16.dll
librsvg-2-2.dll
libsigc-2.0-0.dll
libstdc++-6.dll
libsystre-0.dll
libthai-0.dll
libtiff-5.dll
libtre-5.dll
libwinpthread-1.dll
libxml2-2.dll
libzstd.dll
zlib1.dll

 次に示すAdwaitaテーマファイルとディレクトリーを<prefix>\share\icons\Adwaita\からコピーし.\share\icons\Adwaita\に貼り付けます:

scalable\actions
scalable\devices
scalable\mimetypes
scalable\places
scalable\status
scalable\ui
index.theme
cursors\plus.cur
cursors\sb_h_double_arrow.cur
cursors\sb_left_arrow.cur
cursors\sb_right_arrow.cur
cursors\sb_v_double_arrow.cur

 次のファイルをコピーします:

<prefix>\lib\gdk-pixbuf-2.0 -> .\lib\gdk-pixbuf-2.0
<prefix>\share\glib-2.0\schemas\gschemas.compiled -> .\share\glib-2.0\schemas
<prefix>\share\lensfun\version_1\* -> .\share\lensfun

.\share\GTK3に以下を含むsettings.iniファイルを作ります:

[Settings] gtk-button-images=1

配布可能なパッケージを作成する

 Windowsのプラットフォームに配布可能なRawTherapeeのパッケージを作る場合は、最初のステップとして、“generic”プロセッサをターゲットとしたRawTherapeeをビルドする必要があります。そのためには、CMakeコマンドで-DPROC_TARGET_NUMBER="1" を使います。

 コンパイル中に、RawTherapeeのインストールフォルダにWindowsInnoSetup.issという名前のスクリプトが作成されます。このスクリプトは、Windowsプログラムのためにインストーラーを作るプログラム、Inno Setupで使われます。 幾つかの言語による問題を避けるためにユニコードで書かれたバージョンのダウンロードを奨めます。

 ユーザーにバグの報告をしてもらうことがあるので、パッケージの管理者には“release”と”debug”の両実行ファイルをビルドし、それらをGDBのデバッガ実行ファイルと共に一まとめにするようお願いします。

 言い換えると、rawtherapee.exe(release)ファイルとrawtherapee.exe(debug)ファイル、及びgdb.exeファイルを同じインストーラー或いは同じアーカイブに一緒に入れます。別な方法として、“release”より最適化はされていませんが、”debug”より動作速度が数段早い“relwithdebinfo”ビルドの作成があります。”debug”ビルドほどの詳細情報は得られませんが、このビルドでもかなりの情報が得られます。

 “relwithdebinfo”, “debug”ビルドの何れの作成するにしても、GDBデバッガの実行ファイルは一緒に入れて下さい。デバッガ実行ファイルgdb.exeの32ビット及び64ビットバージョンのWindowsバイナリーはここからダウンロード出来ます。これで全ての準備が整いました。WindowsInnoSetup.issを右クリックし、コンテックスメニューの中からコンパイルを選択するとパッケージが作成されます。インストーラーが自動的に作成され、親フォルダーの中に置かれます。

 貴方が作成した新しいパッケージとRawTherapeeウェブサイトのアップロードパネルに互換性を持たせるため、新しく作成されたインストーラーとそれに対応するAboutThisBuild.txtファイルの両方を同じ場所に置くためのzipアーカイブを作って下さい。以下のテンプレーで作成したzipアーカイブに名前を付けます: RawTherapee_<branch>_<version>_WinVista_<64>_<buildtype>.zip 

  • "WinVista"はWindows10を含むVista以降のどのWindowsバージョンでも動作可能であることを意味します。
  • "version" は貴方が5.8タグと一致させた場合は5.8のように表示され、5.8タグの後にdevブランチと一致させた場合は、5.8-g35abd92と表示されます。

 5.8のタグ付けの後にdevをチェックアウトする場合

  • 一つのインストーラーに複数のビルドを入れる場合は、名前に<buildtype>を入れないで下さい。