IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Boost C++ Discussion :

Compilation de boost avec bjam grace au mingw de Code::Blocks


Sujet :

Boost C++

  1. #1
    Membre chevronné
    Inscrit en
    Novembre 2006
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Par défaut Compilation de boost avec bjam grace au mingw de Code::Blocks
    Bonjour à tous,

    J'ai installé le dernier Code::Blocks sur ma bécane windows, et avec un MinGW.

    Je voudrais compiler les quelques libs de boost qui se compilent en l'occurrence, j'ai besoin de filesystem.

    Pour cela, j'aurais bien utilisé bjam puisque c'est ce que préconise boost.org. Cependant, je n'arrive pas à me faire comprendre de cet outil.

    J'ai réussi à lui expliquer que je voulais qu'il utilise gcc en lui fournissant le paramètre : , et en mettant dans mon path à la fois le chemin de gcc et celui cd cc1plus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    path "c:\tools\CodeBlocks\MinGW\bin";"c:\tools\CodeBlocks\MinGW\libexec\gcc\mingw32\3.4.5";%PATH%
    Mais maintenant, il semble de pas trouver les include standards. Ainsi des commandes comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc.compile.c++ bin.v2\libs\test\build\gcc-mingw-3.4.5\release\threading-multi\debug.o
    qui sont lancées par bjam, donnent des erreurs comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./boost/config/no_tr1/utility.hpp:21:21: utility: No such file or directory
    En français dans le texte, il n'arrive pas à compiler la ligne :
    parce qu'il ne trouve pas le fichier "utility".

    J'en déduis qu'il faut que j'explique à bjam comment donner les bons paramètres à gcc, et notamment celui qui lui explique où il peut trouver les fichiers d'includes.

    Quelqu'un sait-il comment on fait cela ?

    Merci par avance.

  2. #2
    Membre chevronné
    Inscrit en
    Novembre 2006
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Par défaut
    Je suis toujours coinçé avec cette compilation.

    Voici un extrait des logs, au cas où cela susciterait l'intérêt de quelqu'un :
    ...patience...
    ...patience...
    ...found 2861 targets...
    ...updating 221 targets...
    gcc.compile.c++ bin.v2\libs\test\build\gcc-mingw-3.4.5\release\threading-multi\debug.o
    In file included from ./boost/config/select_stdlib_config.hpp:20,
    from ./boost/config.hpp:40,
    from ./boost/test/detail/config.hpp:19,
    from ./boost/test/impl/debug.ipp:19,
    from libs\test\src\debug.cpp:16:
    ./boost/config/no_tr1/utility.hpp:21:21: utility: No such file or directory
    In file included from ./boost/config.hpp:53,
    from ./boost/test/detail/config.hpp:19,
    from ./boost/test/impl/debug.ipp:19,
    from libs\test\src\debug.cpp:16:
    ./boost/config/platform/win32.hpp:17:22: _mingw.h: No such file or directory
    In file included from ./boost/test/impl/debug.ipp:20,
    from libs\test\src\debug.cpp:16:

    Je vais peut-être compiler via code::blocks en créant un projet.

    Merci à ceux qui pourront m'aider.

  3. #3
    Membre chevronné
    Inscrit en
    Novembre 2006
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Par défaut
    J'ai finalement réussi par arriver à compiler boost.
    Mais la méthode que j'ai utilisé n'est pas glorieuse.

    Comme je l'ai dit précédemment, le problème venait du fait que bjam ne donnait pas les bons paramètres à g++ pour que celui-ci trouve le répertoire dans lequel il devait chercher les headers par défaut.

    Comme je l'ai compris par la suite, il ne donne pas non-plus les bon paramètres au linker pour que celui-ci trouve le répertoire dans lequel il devait chercher les librairies par défaut.

    Autrement dit, bjam générait des lignes comme celle-ci :

    pour la compilation :
    "g++" ... -I"." -c -o "...\debug.o" "...\debug.cpp""
    pour le linkage :
    "g++" ... -L"." "...\debug.o" ...
    Comme je n'ai pas réussi à expliquer à bjam comment faire pour utiliser les bons paramètres, je l'ai grugé en modifiant le fichier
    boost\tools\build\v2\tools\gcc.jam
    J'ai remplacé les lignes :
    actions compile.c++ bind PCH_FILE
    {
    "$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-128 $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" -c -o "$(<:W)" "$(>:W)"
    }
    par
    actions compile.c++ bind PCH_FILE
    {
    "$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-128 $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"C:\MinGW\include\c++\3.4.5" -I"C:\MinGW\include\c++\3.4.5\mingw32" -I"C:\MinGW\include" -I"C:\MinGW\lib\gcc\mingw32\3.4.5\include" -I"$(PCH_FILE:D)" -I"$(INCLUDES)" -c -o "$(<:W)" "$(>:W)"
    }
    et
    actions link.dll bind LIBRARIES
    {
    "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,"$(RPATH)" "$(.IMPLIB-COMMAND)$(<[1])" -o "$(<[-1])" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(<[-1]:D=) -shared $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS)
    }
    par :
    actions link.dll bind LIBRARIES
    {
    "$(CONFIG_COMMAND)" -L"E:/lib/" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,"$(RPATH)" "$(.IMPLIB-COMMAND)$(<[1])" -o "$(<[-1])" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(<[-1]:D=) -shared $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS)
    }

  4. #4
    Membre chevronné
    Inscrit en
    Novembre 2006
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Par défaut
    A noter que la raison pour laquelle les librairies sont dans "E:/lib", c'est parce qu'au départ je les avait laissées dans
    c:\MinGW\lib
    et dans
    c:\MinGW\lib\gcc\mingw32\3.4.5
    mais pour une raison obscure, g++ (ou du moins ld) continuait de ne pas les trouver. J'en ai donc fait une copie.

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Et habituellement, il les trouve ? ou tu as dû modifier les paramètres de C::B ?

  6. #6
    Membre chevronné
    Inscrit en
    Novembre 2006
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Par défaut
    Merci de ton intervention.

    Habituellement il les trouve.

    J'avoue ne pas m'être penché sur l'utilisation de mingw par code::blocks, mais je ne serais pas épaté qu'étant habitué à travailler avec MinGW, il lui donne systématiquement les bons paramètres.

    Ce qui est sur c'est que si je crée un nouveau projet avec un fichier main.ccp qui ressemble à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #include <utility>
    int main(int argc, char** argv)
    {
    	return 0;
    }
    Cela compile et s'exécute, ce qui doit vouloir dire que le compilateur a reçu le bon paramètre en "-I" puisqu'il trouve utility, et que le linker a reçu le bon paramètre en -L puisqu'il trouve des choses comme crt2.o.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/11/2010, 14h21
  2. Installation de Boost avec Code::Blocks et MinGW
    Par kalash_jako dans le forum Code::Blocks
    Réponses: 0
    Dernier message: 27/08/2007, 12h16
  3. Installer Boost avec CodeBlocks et MinGW
    Par Sephiroth Lune dans le forum Boost
    Réponses: 28
    Dernier message: 18/09/2006, 21h51
  4. Compile avec VC8, mais pas MinGW GCC 3.4.5
    Par Aszarsha dans le forum Visual C++
    Réponses: 3
    Dernier message: 01/09/2006, 13h26
  5. Erreur de compilation de boost::date_time avec mingw
    Par shenron666 dans le forum Code::Blocks
    Réponses: 1
    Dernier message: 26/08/2006, 18h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo