1. Présentation:

Le répertoire "sources" contient quelques fichiers de ressources (images, icônes) et tous les fichiers sources C++ de WinCaml.
Son sous-répertoire "All" contient les fichiers sources C++ qui décrivent le fonctionnement de WinCaml indépendamment du système d'exploitation.
Son sous-répertoire "Qt" contient la passerelle Qt vers Linux, Mac OS X et Windows.
Son sous-répertoire "Win" contient la passerelle native vers Windows.
Son sous-répertoire "wx" contient la passerelle wxWidgets vers Linux, Mac OS X et Windows (utiliser wxWidgets-2.9.5 ou wxWidgets-3.x.y)

Les répertoires "MinGW" et "MSVC" contiennent dans leurs sous-répertoires divers scripts "build*.sh" ou "build*.bat" permettant de compiler WinCaml pour Windows.
Choisir le répertoire "MinGW" en cas d'utilisation d'un compilateur MinGW, le répertoire "MSVC" en cas d'utilisation d'un compilateur Microsoft (cl.exe).

Le répertoire "Qt" contient le fichier "WinCaml.pro" (projet Qt) et, dans ses sous-répertoires "lin", "mac", des scripts "build.sh" permettant de compiler WinCaml respectivement pour Linux et Mac OS X munis de Qt SDK 4.7.0 ou ultérieur. 
Il contient dans son sous-répertoire "win" des scripts "build*.sh" et "build*.bat" permettant de compiler WinCaml via Qt pour Windows.

Le répertoire "WX" contient dans ses sous-répertoires "lin" et "mac" des scripts "build.sh" permettant de compiler WinCaml respectivement pour Linux et Mac OS X munis des bibliothèques wxWidgets.
Il contient dans son sous-répertoire "win" des scripts "build.sh" et "build*.bat" permettant de compiler WinCaml pour Windows muni des bibliothèques wxWidgets.

Le répertoire "caml" contient l'environnement caml-light/ocaml de WinCaml. Noter que caml-light, ocaml et leurs documentations sont sous copyright de L'INRIA.
Ce répertoire est utilisé dans la construction du répertoire "WinCaml6" (cf. § 3. Résultat). Il n'intervient pas dans la compilation de WinCaml.

Noter aussi que OCaml devrait, au moins pour être utilisé sous Linux et OS X avec WinCaml, être installé directement à partir de l'archive en code source "ocaml-x.yy.z.tar.gz" du site http://caml.inria.fr
(./configure, make world, et (en administrateur) make install) dans le répertoire /usr/local, ou probablement encore mieux pour Wincaml, à partir de "patch_oc". 



2. Marche à suivre pour construire WinCaml:


2.1 Sous-répertoires du répertoire "MinGW":
Après avoir installé MSYS et MinGW (compilateur ciblant l'architecture x86 ou x64):
- Choisir le script "build_xxxx_yy.sh" approprié: xxxx = 2000 pour Windows 2000, xxxx = XP-8 pour Windows XP et ultérieurs, yy = 32 pour l'architecture x86 et yy = 64 pour l'architecture x64
- Vérifier dans le script "build_xxxx_yy.sh", que les valeurs des variables TOOLCHAIN, GXX, WINDRES et STRIP correspondent bien à l'emplacement de MinGW (notamment dans le cas "win64").
- Ouvrir une fenêtre MSYS et positionner la ligne de commande sur le répertoire "MinGW" et exécuter ce script (i.e. entrer la commande: ./build_xxxx_yy.sh).
  ou bien
  demander à Windows d'exécuter les fichiers "*.sh" à l'aide du programme "sh.exe" de MSYS, puis lancer le script "build_xxxx_yy.sh" par double clic.


2.2 Sous-répertoires du répertoire "MSVC":
- En cas d'utilisation de l'ancien Microsoft Visual C++ 6, choisir le script "build_2000_32.bat".
  sinon, après avoir installé Microsoft Visual C++ (Microsoft Visual C++ express suffit: les éditions 2008, 2010 et 2012 - resp. vc9, vc10 et vc11 - fournissent chacune des compilateurs "cl.exe" pour les architectures x86 et x64),
- Choisir le script "build_xxxx_yy.bat" où xxxx est l'année (2008, 2010 ou 2012) du compilateur utilisé et yy = 32 pour l'architecture x86, 64 pour l'architecture x64
- Vérifier au début du script "build_xxxx_yy.bat" la validité du chemin du script "vcvarsall.bat" ou "vcvars32.bat"
- Exécuter le script "build_xxxx_yy.bat" par double clic
  (ou bien ouvrir une "Invite de commandes" Windows, positionner la ligne de commande sur le sous-répertoire choisi et exécuter le script en entrant la commande: build_xxxx_yy.bat).


2.3 Sous-répertoires du répertoire "Qt" (Linux, Mac OS X ou Windows): 

2.3.1 Linux, OS X:
Après avoir installé les outils de développement (notamment g++ et make sous Linux, xcode sous OS X) et Qt SDK 4.7.x ou 4.8.x ou 5.x.y,
- Ouvrir une fenêtre de terminal bash.
- Placer la ligne de commande sur le sous-répertoire correspondant au système d'exploitation ("lin", "mac").
- Rendre si nécessaire le script "build.sh" exécutable (chmod +x build.sh).
- Vérifier la présence de "qmake" dans la variable d'environnement PATH (echo $PATH) ou attribuer son chemin complet à QMAKE dans le script "build.sh".
- Exécuter le script "build.sh" (i.e. entrer la commande: ./build.sh).

2.3.2 Windows avec Qt 4.7.0 pour Windows 32-bit (Qt mingw 2010.05) (paquet binaire):
- Après avoir installé MSYS,  demander à Windows d'exécuter les fichiers "*.sh" à l'aide du programme "sh.exe" de MSYS puis exécuter le script "build_Qt_4_7.sh" par double clic. 
   (ou bien ouvrir une fenêtre MSYS, positionner la ligne de commande sur le sous-répertoire "win" et exécuter le script en entrant la commande .build_Qt_4_7.sh)

2.3.3 Windows avec Qt 4.8.4 pour Windows 32-bit (msvc 2010, vc10) (paquet binaire):
- Après avoir installé Microsoft Visual C++ 2010 (l'édition express suffit), exécuter le script "build_Qt_4_8_4.bat" par double clic
   (ou bien ouvrir une "Invite de commandes" Windows, positionner la ligne de commande sur le sous-répertoire "win" et exécuter le script en entrant la commande: build_Qt_4_8_4.bat).

2.3.4 Windows avec Qt 5.0.0 pour Windows 32-bit (msvc 2010, vc10) (paquet binaire):
- Après avoir installé Microsoft Visual C++ 2010 (l'édition express suffit), exécuter le script "build_Qt_5_0_0.bat" par double clic
   (ou bien ouvrir une "Invite de commandes" Windows, positionner la ligne de commande sur le sous-répertoire "win" et exécuter le script en entrant la commande: build_Qt_5_0_0.bat).

2.3.5 Windows avec Qt 5.0.2 for Windows 64-bit (mscv 2012, vc11) (paquet binaire):
- Après avoir installé Microsoft Visual C++ 2012 (l'édition express suffit), exécuter le script "build_Qt_5_0_2.bat" par double clic
   (ou bien ouvrir une "Invite de commandes" Windows, positionner la ligne de commande sur le sous-répertoire "win" et exécuter le script en entrant la commande: build_Qt_5_0_2.bat).

2.3.6 Windows avec Qt 5.1.1 for Windows 64-bit (mscv 2012, vc11) (paquet binaire):
- Après avoir installé Microsoft Visual C++ 2012 (l'édition express suffit), exécuter le script "build_Qt_5_1_1.bat" par double clic
   (ou bien ouvrir une "Invite de commandes" Windows, positionner la ligne de commande sur le sous-répertoire "win" et exécuter le script en entrant la commande: build_Qt_5_1_1.bat).

...

2.4 Sous-répertoires de "WX" (Linux, Mac OS X ou Windows):

Décompresser l'archive wxWidgets-3.0.x.zip (Windows) ou wxWidgets-3.0.x.tar.bz2 (Linux, OS X) obtenue à http://www.wxWidgets.org: par exemple sous Windows son contenu pourra aller dans C:\wxWidgets-3.0.x et sous Linux ou OS X dans $HOME/wxWidgets-3.0.x .
Après avoir compilé wxWidgets-3.0.x dans un certain environnement, repérer dans les sous répertoires de "WX" le script "build.sh" (Linux, Mac OS X, windows-MinGW-msys) ou "build*.bat" (Windows) correspondant à cet environnement. Y modifier si nécessaire la variable WXPATH (elle doit contenir la chemin du répertoire wxWidget-3.0.x précédemment compilé). Exécuter ce script en ligne de commande (comme pour Qt ci-dessus) ou par double clic (Linux, Windows).
Sous Linux wxWidgets-3.0.x doit être configuré pour l'utilisation de Gtk2 ou Gtk3 et le script "build.sh" peut nécessiter quelques modifications (variables INCLUDES et LIBS): il suppose l'utilisation de Gtk2; s'inspirer des variables INCLUDES et LIBS des "Makefile" des répertoires wxWidgets-3.0.x/samples/*. 

Pour Windows avec MinGW-msys, compiler wxWidgets-3.0.x en utilisant la ligne de commande de msys comme suit ( en supposant la distribution dans C:\wxWidgets-3.0.x):
  cd /c/wxWidgets-3.0.x
  ./configure
  make
  
Pour Windows muni d'un compilateur Microsoft "cl.exe", compiler de préférence wxWidgets-3.0.x en utilisant la ligne de commande de ce compilateur à partir du répertoire wxWidgets-3.0.x\build\msw:
  nmake -f makefile.vc BUILD=release
(on peut aussi utiliser l'un des projets Visual C++ proposés)

3. Résultat:

Dans tous les cas on doit finalement obtenir un répertoire "WinCaml6" contenant l'exécutable WinCaml (WinCaml.exe pour Windows, WinCaml.app pour Mac OS X)
prêt à fonctionner.

Sous Windows et Mac OS X Le répertoire WinCaml6 sera trouvé à côté du script utilisé; on pourra le déplacer vers tout endroit accessible en écriture.
Sous Windows, on pourra créer sur le bureau un raccourci vers l'application WinCaml.exe située dans le répertoire WinCaml6 ou épingler WinCaml.exe dans la barre des tâches.
Sous Mac OS X on pourra représenter l'application WinCaml.app par un raccourci sur le bureau ou faire glisser son icône dans le Dock.

Sous Linux, supposé fonctionner avec comme gestionnaire de fenêtre Gnome ou Kde, le script "build.sh" transfère le répertoire "WinCaml6" dans le répertoire personnel et crée dans ce dernier un fichier "WinCaml.desktop".
(Voir le contenu de "build.sh" pour empêcher ce transfert ou corriger d'éventuels dysfonctionnements).
Faire glisser l'icône du fichier "WinCaml.desktop" du répertoire personnel vers le bureau (sous Gnome 2 le fichier "WinCaml.desktop" est déplacé vers le dossier "Bureau", sous Gnome 3 ou Kde 4 une icône est créée sur le bureau).
WinCaml peut alors être lancé par double clic (simple clic pour Gnome 3 ou Kde 4) ou fonctionner par "glisser-déposer" à l'aide de cette icône qui devrait (éventuellement après une question de confiance à la première utilisation) représenter le "chameau à lunettes".



4. Répertoire WinCaml du dossier personnel (Qt: Linux et OS X):

L'application WinCaml utilisant la passerelle Qt dépose dans le répertoire WinCaml du dossier personnel (après avoir éventuellement créé ce répertoire) son fichier de configuration (fichier texte).
Ce répertoire WinCaml, où séjournent aussi quelques fichiers temporaires, devrait lui être réservé. Les fichiers temporaires ne devraient plus exister quand WinCaml a quitté normalement.
En cas de problèmes, effacer les fichiers temporaires éventuels. Pour réinitialiser complètement WinCaml effacer aussi le fichier de configuration.



5. Répertoire WinCaml du dossier personnel (wxWidgets: Linux, OS X, Windows):

Le chemin de ce répertoire est le suivant:
Linux (fichier caché): $HOME/.WinCaml 
OS X: $HOME/Library/Application Support/WinCaml
Windows XP: %HOMEPATH%\Local Settings\Application Data\WinCaml

Ce répertoire contient le fichier de configuration de WinCaml, le fichier temporaire "lockfile" verrouillant le démarrage de WinCaml (destiné à empêcher le démarrage d'un second exemplaire de l'application) et des fichiers temporaires nommés "0" ou "1" contenant les chemins des fichiers à ouvrir au démarrage.
Si WinCaml ne démarre pas, cela peut être dû à la présence - par exemple suite à un crash de WinCaml - du fichier "lockfile"; effacer "lockfile" devrait résoudre le problème.
En cas de corruption du fichier de configuration, effacer ce dernier (réinitialisation complète de WinCaml).
On peut aussi, en cas de problèmes, démarrer WinCaml par la ligne de commande "WinCaml init".



6. Utilitaires unlock.exe (Qt Windows) et WinCamlInit.bat (Windows):

unlock.exe permet d'éliminer (par exemple après un plantage de WinCaml) le fichier verrouillant le démarrage de WinCaml (destiné à empêcher le démarrage d'un second exemplaire de l'application).
WinCamlInit.bat permet de réinitialiser les réglages de WinCaml en supprimant son fichier de configuration (dont l'emplacement, lié à l'utilisateur, dépend de la version de Windows). 
