Installation du compilateur

En premier lieu, il est nécessaire de télécharger Visual C++ Express 2008. Même si je préfère privilégier des outils libres, je dois admettre qu'il s'agit du meilleur environnement de développement sous Windows. L'installation se fait en ligne, donc une connexion à internet est nécessaire pour continuer. Dans mon cas, j'ai choisi d'installer la documentation ainsi que SQL Server pour effectuer quelques tests si j'ai du temps.

J'ai choisi le répertoire d'installation par défaut. Une fois l'installation terminée, n'oubliez pas d'inscrire ce logiciel gratuitement auprès de microsoft pour pouvoir continuer de l'utiliser au delà des 30 jours.

Installation de wxWidgets

D'abord, on télécharge la dernière version de wxWidgets. On choisit la version wxAll qui pourra être compilée sur toutes les plateformes. On extrait l'archive (avec 7-zip par exemple), et on extrait le tout dans un répertoire ne comportant pas d'espaces, de préférence. J'ai choisi c:\wxWidgets-2.8.9. On crée une variable d'environnement WXWIN ayant pour valeur le chemin vers la racine de wxWidget, dans mon cas c:\wxWidgets-2.8.9. Il est possible qu'il faille redémarrer la machine, on pourra faire un echo %WXWIN% dans une console pour vérifier que la valeur a bien été prise en compte.

Avant de pouvoir l'utiliser, il est d'abord nécessaire de compiler wxWidgets. Les deux espaces de travail (fichier .dsw) permettant de compiler la bibliothèque en statique ou en dynamique sont respectivement contenus dans les fichiers build\msw\wx.dsw et build\msw\wx_dll.dsw. Vos pouvez bien sûr compiler plusieurs de ces versions.

Compilation statique de wxWidgets

Si vous décidez de compiler la version statique, ouvrez le fichier build\msw\wx.dsw. Un message vous demandant de convertir le workspace au format actuel peut apparaître, dans ce cas, choisissez oui pour tout. Il est conseillé de ne compiler qu'en statique si vous utilisez le workspace dw.dsw. Choisissez donc une configuration de solution ne contenant pas le mot DLL.

Compilez ensuite via Générer -> Générer la solution. Répétez cette opération autant de fois que nécessaire si vous désirez compiler les autres versions. Pour ma part, j'ai compilé : Unicode Debug, Unicode Release, Debug et Release. Ne compilez pas la version Universal à moins que vous sachiez ce que vous faites. Une fois la compilation terminée, les bibliothèques statiques sont écrites dans le répertoire lib\vc_lib. Dans le nom de ces bibliothèques, un u signifie unicode, et un d signifie debug.

Compilation dynamique de wxWidgets

Si vous décidez de compiler la version dynamique, ouvrez le fichier build\msw\wx_dll.dsw. Répondez oui pour tout au message vous demandant de convertir le workspace. Il est conseillé de ne compiler qu'en dynamique si vous utilisez le workspace ds_dll.dsw. Choisissez donc une configuration de solution contenant le mot DLL.

Compilez ensuite via Générer -> Générer la solution. Répétez cette opération autant de fois que nécessaire si vous désirez compiler les autres versions. Pour ma part, j'ai compilé : DLL Unicode Debug, DLL Unicode Release, DLL Debug, DLL Release. Ne compilez pas la version Universal à moins que vous sachiez ce que vous faites. Une fois la compilation teminée, les bibliothèques dynamiques sont écrites dans le répertoire lib\vc_dll. Dans le nom de ces bibliothèques, un u signifie unicode, et un d signifie debug.

Notez qu'il est normal que le projet dbgrid échoue. Je n'ai pas testé mais d'après la documentation, si vous voulez l'activer, dans le fichier include\wx\msw\setup.h changez #define wxUSE_ODBC 0 en #define wxUSE_ODBC 1.

Des fonctionnalités supplémentaires dont on ne parlera pas ici sont disponibles dans le dossier contrib, sachez juste que la méthode de compilation est la même que pour les fonctionnalités principales.

Compilation des exemples

Si vous souhaitez voir les exemples de wxWidgets en action, vous pouvez compiler la totalité des exemples en ouvrant le fichier samples\samples.dsw. Il n'est pas utile de les compiler dans toutes les configurations, utilisez Release pour gagner en taille puis générez la solution. Les exécutables des exemples sont disponibles dans leurs dossiers respectifs, c'est-à-dire samples\*\vc_msw où l'étoile représente le nom de chaque projet.

Installation de boost

Bien qu'un installeur existe, il est bon de savoir compiler boost sur son système, en effet, l'installeur n'est pas fourni par boost, donc on n'est pas certain que cela dure. Téléchargez d'abord la dernière version de boost. On la décompresse à la racine du disque, attention aux sous-répertoires. Pour ma part, voici mon répertoire boost : c:\boost_1_37_0. Ensuite, téléchargez l'utilitaire de compilation bjam sur cette même page, prenez la version la plus récente et se terminant par ntx86 (version windows). Décompressez cette archive dans le même répertoire que celui où vous avez décompressé boost.

bjam.exe s'utilise en deux temps : le premier permet de compiler les bibliothèques (étape stage) et le second de les installer (étape install). Il est possible de compiler les bibliothèques en plusieurs versions : statique ou dynamique, debug ou release... Il s'agit d'une combinaison des propriétés suivantes :

  • variant : debug ou release permet de compiler boost en debug ou en release ;
  • link : static ou shared permet de compiler boost en statique ou en dynamique (DLL) ;
  • threading : single ou multi permet de compiler en mono ou multi thread. on choisira multithread ;
  • runtime-link : static ou shared permet de lier boost à la bibliothèque C/C++ en statique ou dynamique. Dans le premier cas, la bibliothèque C/C++ est inclue dans les bibliothèques boost, dans le second cas, il faut fournir les DLL de la CRT de Visual C++ lors du déploiement de l'application.

Voici les différentes possibilités de compilation avant que nous commencions (les valeurs entre parenthèses sont des options de compilation de Visual C++) :

multithreaded debug, dll : dll debug (/MDd) - utilisé en debug si BOOST_DYN_LINK est défini.
variant=debug threading=multi runtime-link=shared link=shared
multithreaded dll : dll release (/MD) - utilisé en release si BOOST_DYN_LINK est défini.
variant=release threading=multi runtime-link=shared link=shared
multithreaded : lib statique release (/MD) - utilisé par défaut en release.
variant=release threading=multi runtime-link=shared link=static
multithreaded debug : lib statique debug (/MDd) - utilisé par défaut en debug.
variant=debug threading=multi runtime-link=shared link=static
multithreaded, static runtime : lib statique release, CRT statique (/MT) - recommandé en release car simplifie le déploiement.
variant=release threading=multi runtime-link=static link=static
multithreaded debug, static runtime : lib statique debug, CRT statique (/MTd).
variant=debug threading=multi runtime-link=static link=static

Nous allons compiler ces six versions, mais vous pouvez ne compiler que celles qui vous conviennent. Personnellement, je n'ai ni besoin de MPI ni de Python donc je désactiverai leurs compilations et installations via les paramètres --without-mpi et --without-python. Ouvrez une console. Placez vous dans votre répertoire boost via la commande cd c:\boost_1_37_0. Ensuite, lancez les quatre commandes suivantes, notez les combinaisons debug,release qui permettent de compiler les deux versions en une seule ligne de commande.

bjam.exe --build-dir=build --without-mpi --without-python toolset=msvc variant=debug,release link=static threading=multi runtime-link=static,shared stage
bjam.exe --build-dir=build --without-mpi --without-python toolset=msvc variant=debug,release link=static threading=multi runtime-link=static,shared install
bjam.exe --build-dir=build --without-mpi --without-python toolset=msvc variant=debug,release link=shared threading=multi runtime-link=shared stage
bjam.exe --build-dir=build --without-mpi --without-python toolset=msvc variant=debug,release link=shared threading=multi runtime-link=shared install

Par défault, le répertoire d'installation est c:\boost. Si vous désirez l'installer ailleurs, utilisez l'option : --prefix=c:\autre_emplacement dans la commande install.

Une fois la compilation terminée, les bibliothèques se trouvent dans c:\Boost\lib et les fichiers en-têtes dans c:\Boost\include\boost-1_37. Vous pouvez alors supprimer les dossiers c:\boost_1_37_0\build et c:\boost_1_37_0\stage pour gagner de l'espace disque. L'installation est donc terminée.

Notes : Pour consulter les exemples, il suffit d'ouvrir le fichier libs/libraries.htm et de naviguer via les liens. Si cela vous intéresse, voyez comment les bibliothèques boost sont nommées.

Utilisation des bibliothèques

Il est temps de configurer Visual C++ pour lui indiquer où trouver les fichiers d'en-têtes et les bibliothèques lors de la compilation. Dans le menu Outils -> Options -> Projets et solutions -> Répertoires de VC++, sélectionnez Fichiers Include dans la liste déroulante répertoires. Ajoutez-y les répertoires suivants : c:\Boost\include\boost-1_37, c:\wxWidgets-2.8.9\include et c:\wxWidgets-2.8.9\include\msvc. Dans cette même liste déroulante, sélectionnez Fichiers bibliothèques et ajoutez les répertoires suivantes : c:\Boost\lib, c:\wxWidgets-2.8.9\lib\vc_lib et c:\wxWidgets-2.8.9\lib\vc_dll. Notez que certaines constantes devront être définies pour utiliser wxWidgets, plus d'informations ici : Creating a new project by hand. Ajoutez également les répertoires contenant les bibliothèques (lib) dans le PATH Windows.

Vous êtes maintenant prêts à tester les exemples fournis avec boost et wxWidgets.