Compiler Boost sous Windows et essai avec CodeBlocks

Le but de cet article est de présenter l’installation de la librairie boost en version compilée (pour utiliser boost thread, par exemple) sous windowspour l’utiliser avec Code::Blocks.

On commence par récupérer la dernière version stable (1.49.0 aujourd’hui) à cette adresse : http://www.boost.org/users/download/.

On décompresse l’archive à la racine de C:\\boost dans notre exemple. Comme j’utlise Code::Blocks (MinGW), il faut compiler avec ce compilateur qui n’est pas officiellement supporté par Boost.

 

Installation

Il faut que dans la variable d’environnement PATH soit ajouté le chemin vers mingw/bin, par exemple : C:\\Program files\\codeblocks\\mingw\\bin, par défaut avec Code::Blocks. Ici la version de GCC est la gcc-mingw-4.5.2.

Ouvrez une fenêtre cmd (Démarrer->Exécuter, tapez cmd). allez dans C:\\boost\\tools\\buid\\v2

Exécutez bootstrap.bat, le log doit donner quelque chose de ressemblant à ça :


###
### Using 'mingw' toolset.
###

C:\\boost\\tools\\build\\v2\\engine>if exist bootstrap rd /S /Q bootstrap

C:\\boost\\tools\\build\\v2\\engine>md bootstrap

C:\\boost\\tools\\build\\v2\\engine>gcc -DNT -o bootstrap\\jam0.exe  command.c compile.c debug.c execnt.c expand.c filent.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c newstr.c option.c output.c parse.c pathunix.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c md5.c pwd.c class.c w32_getreg.c native.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c

C:\\boost\\tools\\build\\v2\\engine>.\\bootstrap\\jam0 -f build.jam --toolset=mingw "--toolset-root=C:\\MinGW\\ " clean
...found 1 target...
...updating 1 target...
...updated 1 target...

C:\\boost\\tools\\build\\v2\\engine>.\\bootstrap\\jam0 -f build.jam --toolset=mingw "--toolset-root=C:\\MinGW\\ " 
...found 49 targets...
...updating 3 targets...
[MKDIR] bin.ntx86
[COMPILE] bin.ntx86\\b2.exe
[COPY] bin.ntx86\\bjam.exe
...updated 3 targets...

Enuite, on exécute:

b2 –prefix= »C:\\boost » toolset=gcc install

On retourne dans C:\\boost et lance :

bin\\bjam.exe stage –build-type=complete –build-dir= »C:\\boost\\build »  –toolset=gcc –stage-dir= »C:\\boost » –without-mpi –without-python

bin\\b2.exe –prefix-dir= »C:\\boost » toolset=gcc

Cette étape est assez longue. On peut vérifiez que les librairies (*.a) sont dans C:\\boost\\stage\\lib. Puis :

bin\\b2.exe –prefix-dir= »C:\\boost » toolset=gcc install

C’est long aussi.

 

Vérification de l’installation

On choisit un programme exemple donné avec Boost et on va le compiler avec Code::Blocks.

Le programme est un classique hello.cpp:


// Copyright (C) 2001-2003
// William E. Kempf
//
//  Distributed under the Boost Software License, Version 1.0. (See accompanying
//  file LICENSE_1_0.txt or copy at <a href=(<a href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>;<a href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)>

#include <boost/thread/thread.hpp>
#include <iostream>

void helloworld()
{
    std::cout << "Hello World" << std::endl;
}

int main()
{
    boost::thread thrd(&amp;helloworld);
    thrd.join();

return 1;

}

Afin de le faire fonctionner ajouter avant l’inclusion de <boost/thread/thread.hpp>:

#ifdef WIN32
#define BOOST_THREAD_USE_LIB
#endif

Dans Project -> Build Options, sous l’onglet Compiler settings et sous-onglet Oher options, mettre :
-fexceptions
-I C:\\boost
-lboost

Image pour Compiler settings

Compiler settings

Puis dans l’onglet Linker Settings, mettre :

-L C:\\boost\\lib
-lboost_thread-mgw45-mt-1_49

Le nom de l’inclusion lboost_thread peut changer selon la version de votre compilateur. Pour cela vérifiez la librairie dans C:\\boost\\lib (ici libboost_thread-mgw45-mt-1_49.a).

Image Linker Settings

Linker Settings

 Votre code doit compiler sans erreurs ni warning.

 

EDIT :

J’ai trouvé un bon tutoriel pour débuter avec les threads et les mutexs sous Boost (c’est en anglais):

http://www.drdobbs.com/cpp/the-boostthreads-library/184401518?pgno=1

Si vous en avez d’autres, n’hésitez pas à les donner dans les commentaires.

Vus : 2299
Publié par Boutor : 56