Windows/fr: Difference between revisions

From RawPedia
Jump to navigation Jump to search
 
No edit summary
 
(25 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Ce guide documente la méthode de compilation de RawTherapee en versions 32 bits et 64 bits pour Windows en utilisant le runtime MinGW-w64. Commencez par installer et mettre à jour MSYS2 à l'aide des instructions sur [https://msys2.github.io/]. Puis, exécuter les commandes suivantes en utilisant soit ''MinGW-w64 Win32 Shell'' ou ''MinGW-w64 Win64 Shell'' suivant si vous désirez compiler une version 32 bits ou 64 bits.
<div class="pagetitle">Windows</div>
 
Cette page détaille les instructions pour la compilation de RawTherapee sur les systèmes "Windows".  Il y a aussi des pages séparées avec des instructions pour la compilation sur [[Linux]] et [[macOS]]. Ce guide détaille le "quoi" et le "comment" de la compilation. Concernant le "pourquoi" et les explications des commandes, pour obtenir la liste des dépendances, pour les options de CMake et d'autres informations, veuillez vous référer à l'article détaillé pour [[Linux]].
 
Concernant les instructions sur le clonage de la source, le choix de la branche, la configuration de CMake et la réalisation de la compilation à proprement parler, voir ces instructions dans le guide [[Linux]]. Les informations ci-dessous sont un complément à cela.
 
RawTherapee exige GTK+ 3.22.24 ou plus récent car c'est la [https://gitlab.gnome.org/GNOME/gtk/issues/760#note_110809 première version à supporter les fenêtres natives], sans quoi la fenêtre de RawTherapee pourrait présenter [https://github.com/Beep6581/RawTherapee/issues/4125 un étrange comportement] comme de s'agrandir sous la barre des tâches dans Windows 10.
 
La dernière version de RawTherapee à supporter GTK2 et compatible avec Windows XP est 5.0-r1-gtk2 éditée le 02-02.2017.
 
== Installation de MSYS2 ==
 
=== Installation du système MSYS2 de base ===
 
Commencez par installer et mettre à jour MSYS2 en suivant soigneusement les instructions du [https://msys2.github.io/ MSYS2 site web].
 
Mettre à jour le système MSYS2 de base jusqu'à ce que plus aucune mise à jour ne soit disponible en utilisant :
<pre style="white-space: pre-wrap">
$ pacman -Syu
</pre>
 
A la fin de l'installation, vous obtenez trois shells :
*MSYS2 shell : utilisé pour développer le cœur du système et gérer l'application MSYS2 (principalement la mise à jour des paquetages MSYS2)
 
* MINGW64 shell : Il fournit l'environnement pour compiler les applications 64 bits.
 
* MINGW32 shell : Il fournit l'environnement pour compiler les applications 32 bits.
 
[[File:MSYS2 Shell.jpg]]
 
Note : dans le texte qui suit, <code><MSYS2></code> désigne le répertoire d'installation de MSYS2.
=== Installation des outils et des bibliothèques ===
 
Le gestionnaire de paquetages de MSYS2 est pacman. Vous pouvez vous référer au [https://wiki.archlinux.org/index.php/pacman manuel de pacman] pour plus de détails.
 
Dans le shell MSYS2 :


== Installation des outils et des bibliothèques ==
Premièrement, installer quelques outils divers :
Premièrement, installer quelques outils divers :
<pre style="white-space: pre-wrap">
<pre style="white-space: pre-wrap">
Line 12: Line 47:
$ pacman -S mingw-w64-i686-gcc mingw-w64-i686-gdb mingw-w64-i686-make mingw-w64-i686-pkg-config mingw-w64-i686-cmake
$ pacman -S mingw-w64-i686-gcc mingw-w64-i686-gdb mingw-w64-i686-make mingw-w64-i686-pkg-config mingw-w64-i686-cmake
# win64
# 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
$ 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>
et les bibliothèques requises :
et les bibliothèques requises :
<pre style="white-space: pre-wrap">
<pre style="white-space: pre-wrap">
# win32
# win32
$ pacman -S mingw-w64-i686-gtkmm mingw-w64-i686-gtkmm3 mingw-w64-i686-lcms2 mingw-w64-i686-fftw
$ pacman -S mingw-w64-i686-gtkmm3 mingw-w64-i686-lcms2 mingw-w64-i686-fftw mingw-w64-i686-lensfun
# win64
# win64
$ pacman -S mingw-w64-x86_64-gtkmm mingw-w64-x86_64-gtkmm3 mingw-w64-x86_64-lcms2 mingw-w64-x86_64-fftw
$ pacman -S mingw-w64-x86_64-gtkmm3 mingw-w64-x86_64-lcms2 mingw-w64-x86_64-fftw mingw-w64-x86_64-lensfun
</pre>
 
=== Obtenir les versions applicables des paquetages ===
 
Ce paragraphe doit être ignoré pour l'instant.
Comme MSYS2 fournit des rolling releases de ses paquetages, il peut arriver que de nouvelles versions de certains paquetages soient incompatibles avec la version présente de RawTherapee.
 
Voici une liste de tous les paquetages qui doivent rétrograder de version :
 
<pre style="white-space: pre-wrap">
 
Liste vide
 
</pre>
 
S'ils ne sont pas présents dans <MSYS2>\var\cache\pacman\pkg, ces fichiers peuvent être téléchargés à
http://repo.msys2.org/mingw/x86_64/
 
Puis, dans le shell MSYS2, pour chaque fichier :
 
<pre style="white-space: pre-wrap">
Pacman -U <path-to-files>/mingw-w64-x86_64-...
 
</pre>
 
Ajouter ce qui suit au fichier <MSYS2>\etc\pacman.conf pour empêcher pacman de mettre les paquetages à jour.
 
<pre style="white-space: pre-wrap">
 
# Pacman ne mettra pas à jour les paquetages listés dans IgnorePkg et membres du IgnoreGroup
 
IgnorePkg = mingw-w64-x86_64-<paquetageAIgnorer>
...
 
</pre>
 
Si des paquetages sont interdépendants vous devez les installer avec la même commande:
<pre style="white-space: pre-wrap">
Pacman -U <path-to>/<mingw-w64-x86_64-package1> <path-to>/<mingw-w64-x86_64-package2> ...
</pre>
 
Pour compiler des applications 32 bits, faites ce qui suit en remplaçant '''x86_64''' par '''i386'''.
 
=== Mise à jour du système de base MSYS2 et des paquetages applicatifs ===
 
Dans le shell MSYS2 :
 
<pre style="white-space: pre-wrap">
$ pacman -Syuu
 
</pre>
 
=== Mise à jour de la base de données Lensfun ===
 
Dans le shell Mingw32 ou Mingw64 :
 
<pre style="white-space: pre-wrap">
$ lensfun-update-data
 
</pre>
</pre>


== Télécharger et compiler libiptcdata ==
== Télécharger et compiler libiptcdata ==


La bibliothèque libiptcdata n'est plus fournie par MSYS2, cependant, elle est téléchargeable et configurable en utilisant :
Utiliser soit "''MinGW32 Shell''" pour compiler une version 32 bits, ou "''MinGW64 Shell''" pour compiler une version 64 bits.
 
La bibliothèque libiptcdata n'est pas fournie par MSYS2, cependant, elle est téléchargeable et configurable en utilisant :
<pre style="white-space: pre-wrap">
<pre style="white-space: pre-wrap">
$ 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
Line 36: Line 132:
</pre>
</pre>


Ensuite ''Makefile'' doit être ouvert avec un éditeur de texte pour retirer ''iptc'' et ''docs'' des listes nommées ''SUBDIRS'' et ''DIST_SUBDIRS'' sinon, la compilation ou l'installation échouera.
Rester dans le même répertoire
Le <code>Makefile</code> situé dans ce répertoire doit être ouvert avec un éditeur de texte pour retirer <code>iptc</code>  et <code>docs</code> des listes nommées <code>SUBDIRS</code> et <code>DIST_SUBDIRS</code>, sinon, la compilation ou l'installation échouera.
Vous pouvez utiliser n'importe quel éditeur de texte, par exemple Notepad++.
 
<pre style="white-space: pre-wrap">
<pre style="white-space: pre-wrap">
$ nano Makefile
#edition avec nano
$ nano -m Makefile


# Remplacer
# Rechercher (commande ctrl/W)
DIST_SUBDIRS = m4 libiptcdata po iptc docs win python
DIST_SUBDIRS = m4 libiptcdata po iptc docs win python
# par
# et remplacer par
DIST_SUBDIRS = m4 libiptcdata po win python
DIST_SUBDIRS = m4 libiptcdata po win python


# et remplacer
# Rechercher
SUBDIRS = m4 libiptcdata po iptc docs win $(MAYBE_PYTHONLIB)
SUBDIRS = m4 libiptcdata po iptc docs win $(MAYBE_PYTHONLIB)
# par
# et remplacer par
SUBDIRS = m4 libiptcdata po win $(MAYBE_PYTHONLIB)
SUBDIRS = m4 libiptcdata po win $(MAYBE_PYTHONLIB)
# Enregistrer
ctrl/O
# Quitter
ctrl/X
</pre>
</pre>


Line 58: Line 165:
</pre>
</pre>


== Télécharger et installer Clearlooks ==
== Cloner et compiler RawTherapee ==
 
Utiliser soit "'''MinGW32 Shell'''" pour compiler une version 32 bits, ou "'''MinGW64 Shell'''" pour compiler une version 64 bits.


Les versions de RawTherapee qui utillisent la version 2 de Gtk+ nécessitent le moteur de thème Clearlooks, lequel peut être téléchargé et compilé avec :
=== Cloner le dépôt Git de RawTherapee ===
<pre style="white-space: pre-wrap">
$ curl -LO http://sources.archlinux.org/other/gtk-engines/gtk-engines-2.21.0.tar.gz
$ tar xzf gtk-engines-2.21.0.tar.gz
$ cd gtk-engines-2.21.0


# win32
Le processus de compilation va échouer s'il existe un espace dans le chemin de votre répertoire <code>build</code>. Par exemple si votre nom d'utilisateur sous Windows est "Zank Frappa" alors le nom du chemin sera <code>C:\Users\Zank Frappa\</code> et si vous clonez RawTherapee dedans alors la compilation échouera. Clonez dans un répertoire dont ni lui-même ni ses répertoires parents n'ont d'espace dans leur nom, par exemple <code>C:\code\repo-rt</code>
$ ./configure --prefix=/mingw32 --disable-all --enable-clearlooks
# win64
$ ./configure --prefix=/mingw64 --disable-all --enable-clearlooks


$ make
<pre style="white-space: pre-wrap">
$ make install
$ git clone http://github.com/Beep6581/RawTherapee.git /c/code/repo-rt
$ cd
$ cd /c/code/repo-rt
</pre>
</pre>


== Cloner et compiler RawTherapee ==
Lors du clonage du dépôt, vous allez automatiquement vous retrouver dans la branche <code>dev</code>. Pour basculer manuellement dans la branche <code>dev</code>, faites ceci :


D'abord cloner le dépôt Git de RawTherapee :
<pre style="white-space: pre-wrap">
<pre style="white-space: pre-wrap">
$ git clone http://github.com/Beep6581/RawTherapee.git
$ git checkout dev
$ cd RawTherapee
</pre>
et optionnellement utiliser une branche spécifique si vous ne souhaitez pas compiler la branche ''master'' par défaut, par exemple :
<pre style="white-space: pre-wrap">
$ git checkout gtk3
</pre>
</pre>


Puis, créer une répertoire séparé pour la compilation :
=== Créer une répertoire séparé pour la compilation ===
 
<pre style="white-space: pre-wrap">
<pre style="white-space: pre-wrap">
$ mkdir build
$ mkdir build
$ cd build
$ cd build
</pre>
</pre>
et exécuter CMake et Make
 
Notez que si vous changez de branche, alors vous devez effacer et re-créer le répertoire <code>build</code> afin que la compilation parte depuis le début dans un répertoire vide, sinon la compilation risque d'échouer. Cependant si vous faites une simple mise à jour sans changer de branche, alors vous n'avez pas besoin de démarrer dans un répertoire build vide, vous pouvez utiliser celui qui existe et la compilation sera plus rapide car tout n'a pas besoin d'être re-compilé.
 
=== Exécuter CMake et Make ===
<pre style="white-space: pre-wrap">
<pre style="white-space: pre-wrap">
$ cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE="debug" -DPROC_TARGET_NUMBER="2" -DBUILD_BUNDLE="ON" -DCMAKE_INSTALL_PREFIX="." -DBINDIR="." -DDATADIR="." -DCACHE_NAME_SUFFIX=4 ..
$ cmake -G "MSYS Makefiles" -DLENSFUNDBDIR=share/lensfun -DCMAKE_BUILD_TYPE="release" -DPROC_TARGET_NUMBER="2" -DCACHE_NAME_SUFFIX="5-dev" ..
$ make -j8
$ make install
$ make install
</pre>
</pre>


Référez vous à l'article [[Linux/fr|Linux]] pour avoir une explication des diverses options passées à CMake et Make.
L' option -DPROC_TARGET_NUMBER="2" va générer une compilation optimisée pour votre l'architecture de votre PC (c'est à dire -march=native)
 
Vous pouvez trouver des explications au sujet de différentes options de CMake dans la [[Linux/fr#CMake|page Linux]], y compris une explication des diverses options de "BUILD_TYPE".


Si vous réalisez une compilation optimisée, par exemple ''release'' ou ''relwithdebinfo'', pour les anciennes versions 32 bits de Windows, comme XP, vous aurez besoin d'ajouter le drapeau de compilation ''-mstackrealign'' :
Si vous réalisez une compilation pour Windows 32 bits et utilisez le "BUILD_TYPE" <code>release</code> ou <code>relwithdebinfo</code>, vous aurez besoin d'ajouter le drapeau de compilation <code>-mstackrealign</code> avant les deux derniers points <code>..</code> de la commande CMake ci-dessus :
<pre style="white-space: pre-wrap">
<pre style="white-space: pre-wrap">
-DCMAKE_C_FLAGS="-mstackrealign" -DCMAKE_CXX_FLAGS="-mstackrealign"
-DCMAKE_C_FLAGS="-mstackrealign" -DCMAKE_CXX_FLAGS="-mstackrealign"
</pre>
</pre>


== Copier RawTherapee et les DLL requises ==
=== Démarrer RawTherapee ===
RawTherapee peut maintenant être démarré depuis la ligne de commande de MINGW64 :


RawTherapee peut maintenant être démarré depuis la ligne de commande de MSYS2 :
<pre style="white-space: pre-wrap">
<pre style="white-space: pre-wrap">
# pour les compilations debug
# pour les compilations debug
Line 115: Line 216:
# pour les compilations release
# pour les compilations release
$ cd release
$ cd release
# pour les compilations relwithdebinfo
$ cd relwithdebinfo
$ ./rawtherapee.exe
$ ./rawtherapee.exe
</pre>
</pre>


Le gestionnaire de fichiers peut être utilisé pour copier le contenu de ''<MSYS2>\home\<User>\RawTherapee\build\<debug|release>'' avec les DLL nécessaires de ''<MSYS2>\<mingw32|mingw64>\bin'' dans un répertoire d'installation de RawTherapee, où ''<MSYS2>'' est le répertoire d'installation de MSYS2 et ''<User>'' le nom de l'utilisateur Windows.
== Copier RawTherapee et les DLL requises ==


Voici une liste (peut-être incomplète) des DLL requises :
Vous pouvez réaliser les copies soit avec le gestionnaire de fichiers de Windows ou, plus recommandé, avec [https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy robocopy] à l'intérieur du script shell <code><mingw32|mingw64></code> en utilisant pour les options <code>-</code> à la place de <code>/</code>.
 
Définition des répertoires :
 
*<code><prefix></code> est <code><MSYS2>\<mingw32|mingw64></code>,
*<code><MSYS2></code> est le dossier d'installation de MSYS2,
*et <code>.</code> est le dossier d'installation de RawTherapee.
 
Copier le contenu de <code>c:\code\repo-rt\build\<debug|release|relwithdebinfo></code> dans <code>.</code>.
 
Copier les DLL et exe nécessaires de <code><prefix>\bin</code> dans <code>.</code>.
 
 
Voici une liste des DLL et exe requis :
<pre style="white-space: pre-wrap">
<pre style="white-space: pre-wrap">
gspawn-<win32|win64>-helper.exe
gspawn-<win32|win64>-helper-console.exe
gdbus.exe
libatk-1.0-0.dll
libatk-1.0-0.dll
libatkmm-1.6-1.dll
libatkmm-1.6-1.dll
Line 128: Line 247:
libcairo-gobject-2.dll
libcairo-gobject-2.dll
libcairomm-1.0-1.dll
libcairomm-1.0-1.dll
libcroco-0.6-3.dll
libdatrie-1.dll
libepoxy-0.dll
libepoxy-0.dll
libexpat-1.dll
libexpat-1.dll
libffi-6.dll
libffi-6.dll
libfftw3f-3.dll
libfftw3f-3.dll
libfontconfig-1.dll
libfontconfig-1.dll
libfreetype-6.dll
lilibfribidi-0.dll
libgcc_s_dw2-1.dll|libgcc_s_seh-1.dll
libfribidi-0.dll
libgcc_s_seh-1.dll (ou libgcc_s_dw2-1.dll pour W32)
libgdk_pixbuf-2.0-0.dll
libgdk-3-0.dll
libgdk-3-0.dll
libgdk-win32-2.0-0.dll
libgdkmm-2.4-1.dll
libgdkmm-3.0-1.dll
libgdkmm-3.0-1.dll
libgdk_pixbuf-2.0-0.dll
libgio-2.0-0.dll
libgio-2.0-0.dll
libgiomm-2.4-1.dll
libgiomm-2.4-1.dll
Line 147: Line 267:
libgobject-2.0-0.dll
libgobject-2.0-0.dll
libgomp-1.dll
libgomp-1.dll
libgraphite2.dll
libgtk-3-0.dll
libgtk-3-0.dll
libgtk-win32-2.0-0.dll
libgtkmm-2.4-1.dll
libgtkmm-3.0-1.dll
libgtkmm-3.0-1.dll
libharfbuzz-0.dll
libharfbuzz-0.dll
Line 156: Line 275:
libjpeg-8.dll
libjpeg-8.dll
liblcms2-2.dll
liblcms2-2.dll
liblensfun.dll
liblzma-5.dll
liblzma-5.dll
libpango-1.0-0.dll
libpango-1.0-0.dll
Line 162: Line 282:
libpangomm-1.4-1.dll
libpangomm-1.4-1.dll
libpangowin32-1.0-0.dll
libpangowin32-1.0-0.dll
libpcre-1.dll
libpixman-1-0.dll
libpixman-1-0.dll
libpng16-16.dll
libpng16-16.dll
librsvg-2-2.dll
libsigc-2.0-0.dll
libsigc-2.0-0.dll
libstdc++-6.dll
libstdc++-6.dll
libsystre-0.dll
libthai-0.dll
libtiff-5.dll
libtiff-5.dll
libtre-5.dll
libwinpthread-1.dll
libwinpthread-1.dll
libxml2-2.dll
libzstd.dll
zlib1.dll
zlib1.dll
</pre>
</pre>


Les fichiers suivants doivent aussi être copiés :
Copier la liste suivante des fichiers et rèpertoires du thème Adwaita doivent être copiés de  <code><prefix>\share\icons\Adwaita\</code> vers <code>.\share\icons\Adwaita\</code>:
<pre style="white-space: pre-wrap">
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
</pre>
 
Copier les fichiers suivants :
 
<pre style="white-space: pre-wrap">
<pre style="white-space: pre-wrap">
<prefix>\bin\gspawn-<win32|win64>-helper.exe -> .
<prefix>\bin\gspawn-<win32|win64>-helper-console.exe -> .


<prefix>\lib\gtk-2.0\include -> .
<prefix>\lib\gdk-pixbuf-2.0 -> .\lib\gdk-pixbuf-2.0
<prefix>\lib\gtk-2.0\modules -> .
<prefix>\lib\gtk-2.0\2.10.0\engines -> .


<prefix>\share\glib-2.0\schemas\gschemas.compiled -> .\share\glib-2.0\schemas
<prefix>\share\glib-2.0\schemas\gschemas.compiled -> .\share\glib-2.0\schemas
<prefix>\share\lensfun\version_1\* -> .\share\lensfun
</pre>
Dans .\share\gtk-3.0 créer un fichier <code>settings.ini</code>  contenant :
<pre style="white-space: pre-wrap">
[Settings] gtk-button-images=1
</pre>
</pre>
où ''<prefix>'' est ''<MSYS2>\<mingw32|mingw64>'' de ci-dessus et ''.'' est le répertoire d'installation.


== Création d'un paquetage distribuable ==
== Création d'un paquetage distribuable ==


Si vous avez l'intention de distribuer des paquetages de Rawtherapee pour la plateforme Windows, vous devez tout d'abord vous assurer que Rawtherapee sera compilé avec pour cible le processeur générique. Pour cela, indiquer <code>-DPROC_TARGET_NUMBER="1"</code> dans la commande cmake.
Si vous avez l'intention de distribuer des paquetages de RawTherapee pour la plateforme Windows, vous devez tout d'abord vous assurer que RawTherapee sera compilé avec pour cible le processeur "générique". Pour cela, indiquer <code>-DPROC_TARGET_NUMBER="1"</code> dans la commande CMake.
 
Pendant la compilation, un script nommé <code>WindowsInnoSetup.iss</code> est créé dans le répertoire d'installation de RawTherapee. Ce script est utilisé par Inno Setup [http://www.jrsoftware.org/isinfo.php], un programme qui est utilisé pour générer des installateurs pour les programmes Windows. Il est conseillé de télécharger la version Unicode [http://www.jrsoftware.org/download.php/is-unicode.exe] pour éviter les problèmes avec certaines langues.
 
Pour aider les utilisateurs [[How_to_write_useful_bug_reports/fr| à écrire de bons rapports de bogues]], les mainteneurs de paquetages sont encouragés à produire des compilations qui contiennent à la fois un exécutable "release" et un "debug", et de les rassembler avec l'exécutable GDB debugger.
 
En d'autres termes, mettre ensemble le fichier <code>rawtherapee.exe</code> (release), le fichier <code>rawtherapee-debug.exe</code> (debug) et le fichier <code>gdb.exe</code> dans le même installeur ou la même archive. Une autre méthode est de réaliser des compilations "relwithdebinfo", elles sont beaucoup plus rapides que "debug", mais pas autant optimisées que "release", et fournissent a peu près autant d'informations utiles que "debug".  


Pendant la compilation, un script nommé ''WindowsInnoSetup.iss'' est créé dans le répertoire d'installation de Rawtherapee. Ce script est utilisé par Inno Setup [http://www.jrsoftware.org/isinfo.php], un programme qui est utilisé pour générer des installateurs pour les programmes Windows. Il est conseillé de télécharger la version Unicode [http://www.jrsoftware.org/download.php/is-unicode.exe] pour éviter les problèmes avec certaines langues.
Lors de la réalisation de compilations "relwithdebinfo" ou "debug", vous devez fournir l'exécutable du debugger GDB. Les binaires Windows du debugger <code>gdb.exe</code> peuvent être téléchargés depuis [http://www.equation.com/servlet/equation.cmd?fa=gdb ici] dans les versions 32 et 64 bits et seront copiés dans le répertoire d'installation de RawTherapee.
L'actuel script ''WindowsInnoSetup.iss'' est conçu pour la branche maîtresse actuelle (Gtk+2). Si vous désirez créer un paquetage depuis la branche Gtk3, vous aurez besoin d'éditer le script et de remplacer la ligne :


<pre style="white-space: pre-wrap">
Maintenant que tout est en place, pour créer le paquetage cliquer droit sur le script <code>WindowsInnoSetup.iss</code> et choisir
Source: "{#MyBuildBasePath}\lib\*"; DestDir: "{app}\lib\"; Flags: ignoreversion recursesubdirs createallsubdirs
''Compile'' dans le menu contextuel. Il va générer l'installeur automatiquement et le placer dans le répertoireparent.
</pre>


par
Pour rendre votre paquetage compatible avec le panneau de télévezrsement du site web de RawTherapee, créer une archive zip dans laquelle vous placerez ensemble l'installeur nouvellement créé et les  fichiers ''AboutThisBuild.txt'' correspondants qui se trouvent à le même place. Nommer l'archive zip résultante selon ce modèle :


<pre style="white-space: pre-wrap">
<code>RawTherapee_<version>_WinVista_<32|64>_<buildtype>.zip</code>
Source: "{#MyBuildBasePath}\share\*"; DestDir: "{app}\share\"; Flags: ignoreversion recursesubdirs createallsubdirs
</pre>


ainsi les icones et les schémas seront copiés dans le paquetage.
Si vous compilez et distribuez des "nightly builds" (compilations de dernière minute), suivez ce modéle :


Pour aider les utilisateurs [http://50.87.144.65/~rt/w/index.php?title=How_to_write_useful_bug_reports/fr à écrire de bons rapports de bogues], les mainteneurs de paquetages sont encouragés à produire des compilations Debug en parallèle avec chacune de leur compilations Release, et de les rassembler avec l'exécutable du debugger gdb. Les binaires Windows du debugger (gdb.exe) peuvent être téléchargés depuis [http://www.equation.com/servlet/equation.cmd?fa=gdb ici] dans les versions 32 et 64 bits.
<code>RawTherapee_<branch>_<version>_WinVista_<32|64>_<buildtype>.zip</code>
Le binaire ''gdb.exe'' doit être copié dans le répertoire d'installation de Rawtherapee et, en cas d'utilisation de Inno Setup pour générer le paquetage, le script ''WindowsInnoSetup.iss'' doit être édité en ajoutant la ligne suivante auprès de la ligne 121 du script :


<pre style="white-space: pre-wrap">
* "WinVista" signifie qu'il peut s'exécuter sur toute version de Windows depuis Vista et après, y compris 10.
Source: "{#MyBuildBasePath}\gdb.exe"; DestDir: "{app}"; Flags: ignoreversion
</pre>


Notez que GDB est un programme publié sous la licence GNU GPL, son code source se trouve à http://www.gnu.org/software/gdb/.
* la "version" ressemblera soit à <code>5.2</code> si vous utilisez la balise <code>5.2</code>, ou à <code>5.2-dev-g1a2b3c4d</code> si vous utilisez la branche <code>dev</code> après avoir balisé 5.2.


Maintenant que tout est configuré, pour créer le paquetage, cliquer droit sur le script ''WindowsInnoSetup.iss'' et choisir ''Compile'' dans le menu contextuel. Il générera automatiquement l'installateur et le placera dans le répertoire parent. Pour rendre votre nouveau paquetage compatible avec l'"uploader" du Site Web officiel de Rawtherapee, créez une archive zip dans laquelle vous placez ensemble l'installer nouvellement créé et les ''AboutThisBuild.txt'' correspondants qui doivent se trouver à la même place. Nommer l'archive zip résultante selon cet exemple : RawTherapee_<WinXP|WinVista>_<32|64>_branch_buildtype_version.zip (par exemple, Rawtherapee_WinVista_64_gtk3_Release_4.2.730.zip).
* Si vous fournissez plus d'un type de compilation dans l'installeur, ne pas inclure <buildtype> dans le nom.

Latest revision as of 14:34, 4 February 2021

Windows

Cette page détaille les instructions pour la compilation de RawTherapee sur les systèmes "Windows". Il y a aussi des pages séparées avec des instructions pour la compilation sur Linux et macOS. Ce guide détaille le "quoi" et le "comment" de la compilation. Concernant le "pourquoi" et les explications des commandes, pour obtenir la liste des dépendances, pour les options de CMake et d'autres informations, veuillez vous référer à l'article détaillé pour Linux.

Concernant les instructions sur le clonage de la source, le choix de la branche, la configuration de CMake et la réalisation de la compilation à proprement parler, voir ces instructions dans le guide Linux. Les informations ci-dessous sont un complément à cela.

RawTherapee exige GTK+ 3.22.24 ou plus récent car c'est la première version à supporter les fenêtres natives, sans quoi la fenêtre de RawTherapee pourrait présenter un étrange comportement comme de s'agrandir sous la barre des tâches dans Windows 10.

La dernière version de RawTherapee à supporter GTK2 et compatible avec Windows XP est 5.0-r1-gtk2 éditée le 02-02.2017.

Installation de MSYS2

Installation du système MSYS2 de base

Commencez par installer et mettre à jour MSYS2 en suivant soigneusement les instructions du MSYS2 site web.

Mettre à jour le système MSYS2 de base jusqu'à ce que plus aucune mise à jour ne soit disponible en utilisant :

$ pacman -Syu

A la fin de l'installation, vous obtenez trois shells :

  • MSYS2 shell : utilisé pour développer le cœur du système et gérer l'application MSYS2 (principalement la mise à jour des paquetages MSYS2)
  • MINGW64 shell : Il fournit l'environnement pour compiler les applications 64 bits.
  • MINGW32 shell : Il fournit l'environnement pour compiler les applications 32 bits.

MSYS2 Shell.jpg

Note : dans le texte qui suit, <MSYS2> désigne le répertoire d'installation de MSYS2.

Installation des outils et des bibliothèques

Le gestionnaire de paquetages de MSYS2 est pacman. Vous pouvez vous référer au manuel de pacman pour plus de détails.

Dans le shell MSYS2 :

Premièrement, installer quelques outils divers :

$ pacman -S tar gzip nano make diffutils intltool git

Puis installer les outils de développement nécessaires :

# 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 

et les bibliothèques requises :

# 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

Obtenir les versions applicables des paquetages

Ce paragraphe doit être ignoré pour l'instant. Comme MSYS2 fournit des rolling releases de ses paquetages, il peut arriver que de nouvelles versions de certains paquetages soient incompatibles avec la version présente de RawTherapee.

Voici une liste de tous les paquetages qui doivent rétrograder de version :


Liste vide

S'ils ne sont pas présents dans <MSYS2>\var\cache\pacman\pkg, ces fichiers peuvent être téléchargés à http://repo.msys2.org/mingw/x86_64/

Puis, dans le shell MSYS2, pour chaque fichier :

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

Ajouter ce qui suit au fichier <MSYS2>\etc\pacman.conf pour empêcher pacman de mettre les paquetages à jour.


# Pacman ne mettra pas à jour les paquetages listés dans IgnorePkg et membres du IgnoreGroup

IgnorePkg = mingw-w64-x86_64-<paquetageAIgnorer>
...

Si des paquetages sont interdépendants vous devez les installer avec la même commande:

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

Pour compiler des applications 32 bits, faites ce qui suit en remplaçant x86_64 par i386.

Mise à jour du système de base MSYS2 et des paquetages applicatifs

Dans le shell MSYS2 :

$ pacman -Syuu

Mise à jour de la base de données Lensfun

Dans le shell Mingw32 ou Mingw64 :

$ lensfun-update-data

Télécharger et compiler libiptcdata

Utiliser soit "MinGW32 Shell" pour compiler une version 32 bits, ou "MinGW64 Shell" pour compiler une version 64 bits.

La bibliothèque libiptcdata n'est pas fournie par MSYS2, cependant, elle est téléchargeable et configurable en utilisant :

$ 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

Rester dans le même répertoire Le Makefile situé dans ce répertoire doit être ouvert avec un éditeur de texte pour retirer iptc et docs des listes nommées SUBDIRS et DIST_SUBDIRS, sinon, la compilation ou l'installation échouera. Vous pouvez utiliser n'importe quel éditeur de texte, par exemple Notepad++.

#edition avec nano
$ nano -m Makefile

# Rechercher (commande ctrl/W)
DIST_SUBDIRS = m4 libiptcdata po iptc docs win python
# et remplacer par
DIST_SUBDIRS = m4 libiptcdata po win python

# Rechercher
SUBDIRS = m4 libiptcdata po iptc docs win $(MAYBE_PYTHONLIB)
# et remplacer par
SUBDIRS = m4 libiptcdata po win $(MAYBE_PYTHONLIB)

# Enregistrer
ctrl/O

# Quitter
ctrl/X

Enfin, compiler et installer la bibliothèque :

$ make
$ make install
$ cd

Cloner et compiler RawTherapee

Utiliser soit "MinGW32 Shell" pour compiler une version 32 bits, ou "MinGW64 Shell" pour compiler une version 64 bits.

Cloner le dépôt Git de RawTherapee

Le processus de compilation va échouer s'il existe un espace dans le chemin de votre répertoire build. Par exemple si votre nom d'utilisateur sous Windows est "Zank Frappa" alors le nom du chemin sera C:\Users\Zank Frappa\ et si vous clonez RawTherapee dedans alors la compilation échouera. Clonez dans un répertoire dont ni lui-même ni ses répertoires parents n'ont d'espace dans leur nom, par exemple C:\code\repo-rt

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

Lors du clonage du dépôt, vous allez automatiquement vous retrouver dans la branche dev. Pour basculer manuellement dans la branche dev, faites ceci :

$ git checkout dev

Créer une répertoire séparé pour la compilation

$ mkdir build
$ cd build

Notez que si vous changez de branche, alors vous devez effacer et re-créer le répertoire build afin que la compilation parte depuis le début dans un répertoire vide, sinon la compilation risque d'échouer. Cependant si vous faites une simple mise à jour sans changer de branche, alors vous n'avez pas besoin de démarrer dans un répertoire build vide, vous pouvez utiliser celui qui existe et la compilation sera plus rapide car tout n'a pas besoin d'être re-compilé.

Exécuter CMake et Make

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

L' option -DPROC_TARGET_NUMBER="2" va générer une compilation optimisée pour votre l'architecture de votre PC (c'est à dire -march=native)

Vous pouvez trouver des explications au sujet de différentes options de CMake dans la page Linux, y compris une explication des diverses options de "BUILD_TYPE".

Si vous réalisez une compilation pour Windows 32 bits et utilisez le "BUILD_TYPE" release ou relwithdebinfo, vous aurez besoin d'ajouter le drapeau de compilation -mstackrealign avant les deux derniers points .. de la commande CMake ci-dessus :

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

Démarrer RawTherapee

RawTherapee peut maintenant être démarré depuis la ligne de commande de MINGW64 :

# pour les compilations debug
$ cd debug
# pour les compilations release
$ cd release
# pour les compilations relwithdebinfo
$ cd relwithdebinfo
$ ./rawtherapee.exe

Copier RawTherapee et les DLL requises

Vous pouvez réaliser les copies soit avec le gestionnaire de fichiers de Windows ou, plus recommandé, avec robocopy à l'intérieur du script shell <mingw32|mingw64> en utilisant pour les options - à la place de /.

Définition des répertoires :

  • <prefix> est <MSYS2>\<mingw32|mingw64>,
  • <MSYS2> est le dossier d'installation de MSYS2,
  • et . est le dossier d'installation de RawTherapee.

Copier le contenu de c:\code\repo-rt\build\<debug|release|relwithdebinfo> dans ..

Copier les DLL et exe nécessaires de <prefix>\bin dans ..


Voici une liste des DLL et exe requis :

gspawn-<win32|win64>-helper.exe
gspawn-<win32|win64>-helper-console.exe
gdbus.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
lilibfribidi-0.dll
libfribidi-0.dll
libgcc_s_seh-1.dll (ou libgcc_s_dw2-1.dll pour 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

Copier la liste suivante des fichiers et rèpertoires du thème Adwaita doivent être copiés de <prefix>\share\icons\Adwaita\ vers .\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

Copier les fichiers suivants :


<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

Dans .\share\gtk-3.0 créer un fichier settings.ini contenant :

[Settings] gtk-button-images=1

Création d'un paquetage distribuable

Si vous avez l'intention de distribuer des paquetages de RawTherapee pour la plateforme Windows, vous devez tout d'abord vous assurer que RawTherapee sera compilé avec pour cible le processeur "générique". Pour cela, indiquer -DPROC_TARGET_NUMBER="1" dans la commande CMake.

Pendant la compilation, un script nommé WindowsInnoSetup.iss est créé dans le répertoire d'installation de RawTherapee. Ce script est utilisé par Inno Setup [1], un programme qui est utilisé pour générer des installateurs pour les programmes Windows. Il est conseillé de télécharger la version Unicode [2] pour éviter les problèmes avec certaines langues.

Pour aider les utilisateurs à écrire de bons rapports de bogues, les mainteneurs de paquetages sont encouragés à produire des compilations qui contiennent à la fois un exécutable "release" et un "debug", et de les rassembler avec l'exécutable GDB debugger.

En d'autres termes, mettre ensemble le fichier rawtherapee.exe (release), le fichier rawtherapee-debug.exe (debug) et le fichier gdb.exe dans le même installeur ou la même archive. Une autre méthode est de réaliser des compilations "relwithdebinfo", elles sont beaucoup plus rapides que "debug", mais pas autant optimisées que "release", et fournissent a peu près autant d'informations utiles que "debug".

Lors de la réalisation de compilations "relwithdebinfo" ou "debug", vous devez fournir l'exécutable du debugger GDB. Les binaires Windows du debugger gdb.exe peuvent être téléchargés depuis ici dans les versions 32 et 64 bits et seront copiés dans le répertoire d'installation de RawTherapee.

Maintenant que tout est en place, pour créer le paquetage cliquer droit sur le script WindowsInnoSetup.iss et choisir Compile dans le menu contextuel. Il va générer l'installeur automatiquement et le placer dans le répertoireparent.

Pour rendre votre paquetage compatible avec le panneau de télévezrsement du site web de RawTherapee, créer une archive zip dans laquelle vous placerez ensemble l'installeur nouvellement créé et les fichiers AboutThisBuild.txt correspondants qui se trouvent à le même place. Nommer l'archive zip résultante selon ce modèle :

RawTherapee_<version>_WinVista_<32|64>_<buildtype>.zip

Si vous compilez et distribuez des "nightly builds" (compilations de dernière minute), suivez ce modéle :

RawTherapee_<branch>_<version>_WinVista_<32|64>_<buildtype>.zip

  • "WinVista" signifie qu'il peut s'exécuter sur toute version de Windows depuis Vista et après, y compris 10.
  • la "version" ressemblera soit à 5.2 si vous utilisez la balise 5.2, ou à 5.2-dev-g1a2b3c4d si vous utilisez la branche dev après avoir balisé 5.2.
  • Si vous fournissez plus d'un type de compilation dans l'installeur, ne pas inclure <buildtype> dans le nom.