Windows/jp

From RawPedia
Jump to: navigation, search

Windows

 本項はWindowsシステムでRawTherapeeをコンパイルする説明をしています。LinuxmacOSでコンパイルする説明は別項にあります。ここではコンパイルの部分的な詳細説明を行っています。コマンドの意味やディペンデンシー一覧、CMakeのオプション、その他の情報に関しては、Linuxの説明文を参考にして下さい。

 ソースコードのクローン作成、ブランチの選択、CMakeの設定、実際のコンパイル手順も、やはりLinuxの説明文を参考にします。以下はWindowsのコンパイルに関する追加事項です。

 RawTherapeeのコンパイルにはGTK+のバージョン3.22.24以上が必要です。このバージョンは元々Windowsをサポートするための最初のバージョンpatchedなので、バージョン要件が満たされていないと、Windowd10の場合、ウィンドウのタスクバーが 最大表示されるなどの異常な表示になってしまいます。

 GTK+2をサポートし、WindowsXPとの互換性のあるRawTherapeeの最後のバージョンは、2017年2月2日にリリースされた5.0-r1-gtk2です。

MSYS2のインストール

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

 まず、MSYS2 websiteからの以下の説明に従ってMSYS2を更新します。最新版が手に入るまでは次の様にMSYS2の基本システムを更新します:

$ pacman -Syu

インストールの最後に、次の3つのシェルが手に入ります:

  • MSYS2シェル:コアのシステムを開発するのと、MSYS2アプリケーションを管理する(主にMSYS2パッケージの更新)ために使われるものです。
  • MINGW64シェル:64ビットアプリケーションをビルドするための環境を提供します。
  • MINGW32シェル:32ビットアプリケーションをビルドするための環境を提供します。

MSYS2 Shell.jpg

 注意: 以下の<MSYS2> テキストはMSYS2インストールフォルダーです。

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

 MSYS2のパッケージマネジャーはpacmanです。 詳しくは pacmanマニュアル を参照して下さい。  MSYS2シェルには: 初めに、幾つか細かいツールをインストールします:

$ pacman -S tar gzip nano make diffutils intltool git

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

# win32
$ pacman -S mingw-w64-i686-gcc mingw-w64-i686-gdb mingw-w64-i686-make mingw-w64-i686-pkg-config mingw-w64-i686-cmake
# 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

必要なライブラリーをインストールします:

# win32
$ pacman -S  mingw-w64-i686-gtkmm3 mingw-w64-i686-lcms2 mingw-w64-i686-fftw mingw-w64-i686-lensfun 
# win64
$ pacman -S  mingw-w64-x86_64-gtkmm3 mingw-w64-x86_64-lcms2 mingw-w64-x86_64-fftw mingw-w64-x86_64-lensfun

適用可能なバージョンのパッケージを取得する

MSYS2はパッケージを断続的にリリースしているので、新しいバージョンのパッケージに中には現在のRawTherapeeと互換性がないものが存在する可能性があります。  以下はダウンロードする必要のあるパッケージのリストです:

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

もしも、パッケージが<MSYS2>\var\cache\pacman\pkgの中になければ、次に示すリンクからダウンロード出来ます。 この時、MSYS2の中の各ファイルは:

Pacman -U <path-to-files>/mingw-w64-x86_64-...

Pacmanがパッケージを更新しないよう、<MSYS2>\etc\pacman.confに以下を追加します。

# 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

32ビットバージョンをビルドする場合は、上記の作業でx86_64をi386に置き換えて行います。

MSYS2の基本システムとアプリケーションパッケージを更新する

MSYS2のシェルの中は:

$ pacman -Syuu

Lensfunのデータベースを更新

<mingw32|mingw64>\lib\python3.6\site-packagesからlensfunフォルダーとlensfun-0.3.2-py3.6.egg-infoファイルをコピーし、<mingw32|mingw64>\lib\python3.<version>\site-packagesに貼り付けます。 上記の中の<vesion>はインストールされたPython3のバージョンのことです。 Mingw32或いはMingw64シェルには以下が入ります:

$ lensfun-update-data

libiptcdataのダウンロードと作成

 32ビットバージョンをビルドする人は“MinGW32シェル”を、64ビットバージョンをビルドする人は“MinGW64”を使います。 libiptcdataライブラリーはMSYS2から提供されないので、自身でダウンロードし以下を使って作成します:

$ 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

# win32
$ ./configure --prefix=/mingw32
# win64
$ ./configure --prefix=/mingw64

 その後で、Makefileを開き、テキストエディターを使って、SUBDIRSDIST_SUBDIRSという名前のリストからiptcdocsを削除します。そうしないとインストールとビルドが失敗します。

$ nano -m 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
ctrl/O

# quit
ctrl/X

 最後に、ライブラリーを作成してインストールします:

$ make
$ make install
$ cd

RawTherapeeのクローンとビルド

 32ビットバージョンをビルドする人は“MinGW32シェル”を、64ビットバージョンをビルドする人は“MinGW64”を使います。

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

 ビルドフォルダーのパスの中にスペース文字があると、ビルドが失敗します。例えば、Windowsのユーザーネームが“Zank Frappa”だとすると、そのホームパスはC:¥Users¥Zank Frappa¥ですが、その中にRawTherapeeのクローンを入れるとコンパイル中にビルドが失敗するでしょう。単純に、フォルダーにも親フォルダーの名前の中にスペースが入っていないフォルダーにクローンを入れます。例えば、C:¥code\repo-rtのように。

$ git clone http://github.com/Beep6581/RawTherapee.git /c/code/repo-rt
$ cd /c/code/repo-rt

 リポジトリーのクローンを作ると自動的にdevブランチに入りますが、これを手動で行う場合は次を使います:

$ git checkout dev

ビルドのために別のディレクトリーを作成

$ mkdir build
$ cd build

 ビルドのブランチを変更する際には、新しい空のフォルダーを使って初めからコンパイルするため、それまでのビルドファルダ―を必ず削除します。そうしないと恐らくコンパイルに失敗するでしょう。但し、ブランチを変更せずにビルドを更新するだけであれば、空のフォルダーから始める必要はなく、既存のフォルダーが使えるので、速くコンパイルすることが出来ます。

CMakeとMakeを起動

$ cmake -G "MSYS Makefiles" -DLENSFUNDBDIR=share/lensfun -DCMAKE_BUILD_TYPE="release" -DPROC_TARGET_NUMBER="2" -DCACHE_NAME_SUFFIX="5-dev" ..
$ make install

 "BUILD_TYPE"のオプションを含む様々なCMakeのオプションの説明は、Linuxでのコンパイルの項を参照して下さい。  32ビットWindowsのrelease或いはrelwithdebinfoバージョンを作成する場合は、上記CMakeのコマンドの2つのドット..の前に、-mstackrealignというコンパイラフラッグを追加する必要があります。

-DCMAKE_C_FLAGS="-mstackrealign" -DCMAKE_CXX_FLAGS="-mstackrealign"

 これでMINGW64のコマンドラインを使ってRawTherapeeのビルドが始められます:

# for debug builds
$ cd debug
# for release builds
$ cd release
# for relwithdebinfo builds
$ cd relwithdebinfo
$ ./rawtherapee.exe

RawTherapeeと必要なDLLをコピーする

 DLLは、Windowsのファイルマネジャー、或いは<mingw32|mingw64>シェルスクリプトの中にあるrobocopyのinstead of / for the optionsを使って(推奨)コピー出来ます。 フォルダーの定義は:

  • <prefix> is<MSYS2>\<mingw32|mingw64>,
  • <MSYS2> is the MSYS2 installation folder,
  • and . is the RawTherapee installation folder.

Copy the content of c:\code\repo-rt\build\<debug|release|relwithdebinfo> into..  必要なDLLと実行ファイルを<prefix>\binからコピーします。必要なDLLと実行ファイルは次の通りです:

gspawn-<win32|win64>-helper.exe
gspawn-<win32|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 (or libgcc_s_dw2-1.dll for W32)
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" を使います。

 コンパイル中に、WindowsInnoSetup.issという名前のスクリプトがRawTherapeeのインストーラーフォルダーの中に作成されます。このスクリプトはInno Setup [1]で使われるもので、Windows用プログラムのためのインストーラーを作ります。言語に関する問題発生を避けるため、Unicodeのバージョン[2]をダウンロードすることを奨めます。

 ユーザーにバグの報告をしてもらうことがあるので、パッケージの管理者には“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_<32|64>_<buildtype>.zip 

  • "WinVista"はWindows10を含むVista以降のどのWindowsバージョンでも動作可能であることを意味します。
  • "version" は貴方が5.2タグと一致させた場合は5.2のように表示され、5.2タグの後にdevブランチと一致させた場合は、5.2-g1a2b3c4dと表示されます。
  • 一つのインストーラーに複数のビルドを入れる場合は、名前に<buildtype>を入れないで下さい。