Windows/jp

From RawPedia
Revision as of 11:40, 12 December 2019 by Yz2house (talk | contribs)
Jump to navigation Jump to 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>を入れないで下さい。