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 et mode debug


Sujet :

Boost C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 198
    Par défaut Compilation et mode debug
    Bonjour,

    En général les librairies de boost n'ont pas besoin d'être compilées, les headers contiennent tout le code. Cependant certaines nécessitent la compilation, notamment celle que j'utilise du fait de l'utilisation de certaines fonctions. A la compilation par bjam j'obtient la librairie suivante :
    boost/lib/date_time/boost/bin.v2/libs/date_time/build/vacpp/debug/libboost_date_time-xlc-d-1_39.so
    L'apparition de mot debug dans le chemin m'interpelle. La librairie a-t-elle vraiment été compilée dans ce mode ? Si oui comment effectuer la compilation en mode release ?

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    L'apparition de mot debug dans le chemin m'interpelle. La librairie a-t-elle vraiment été compilée dans ce mode ?
    Oui.

    Tu as invoqué bjam dans quel répertoire et comment exactement ?

  3. #3
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Il me semble (en fait je viens de vérifier) que les deux chemins sont créés :

    .../debug/...
    .../release/...

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 153
    Par défaut
    pour compiler en release, il faut le specifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bjam --with-date_time release
    devrait correspondre à ce que tu cherche.

    Personnellement, j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bjam --with-date_time release stage
    qui permet de copier les lib dans un repertoire 'stage'. Ceci permet de ne pas avoir des options de compilation à rallonge.
    --
    Jérémie

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 198
    Par défaut
    Chez moi il n'a créé que le chemin .../debug/...
    Avec l'ajout de release dans la ligne de commande il m'a bien créé un version non debug. Cependant il m'a généré des warnings à la compilation qui n'apparaissent pas dans le mode debug :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        1500-029: (W) WARNING: subprogram std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Assign<char *>(char *, char *, input_iterator_tag) could not be inlined into std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign<char *>(char *, char *).
        1500-029: (W) WARNING: subprogram std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Assign<wchar_t *>(wchar_t *, wchar_t *, input_iterator_tag) could not be inlined into std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::assign<wchar_t *>(wchar_t *, wchar_t *).
        1500-029: (W) WARNING: subprogram std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Assign<std::_Ptrit<wchar_t,long,const wchar_t *,const wchar_t &,wchar_t *,wchar_t &> >(_Ptrit<wchar_t,long,const wchar_t *,const wchar_t &,wchar_t *,wchar_t &>, _Ptrit<wchar_t,long,const wchar_t *,const wchar_t &,wchar_t *,wchar_t &>, input_iterator_tag) could not be inlined into boost::char_separator<wchar_t,std::char_traits<wchar_t> >::operator() <std::_Ptrit<wchar_t,long,const wchar_t *,const wchar_t &,wchar_t *,wchar_t &>,std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > >(_Ptrit<wchar_t,long,const wchar_t *,const wchar_t &,wchar_t *,wchar_t &> &, _Ptrit<wchar_t,long,const wchar_t *,const wchar_t &,wchar_t *,wchar_t &>, basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > &).
        1500-029: (W) WARNING: subprogram std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Assign<std::_Ptrit<wchar_t,long,const wchar_t *,const wchar_t &,wchar_t *,wchar_t &> >(_Ptrit<wchar_t,long,const wchar_t *,const wchar_t &,wchar_t *,wchar_t &>, _Ptrit<wchar_t,long,const wchar_t *,const wchar_t &,wchar_t *,wchar_t &>, input_iterator_tag) could not be inlined into boost::char_separator<wchar_t,std::char_traits<wchar_t> >::operator() <std::_Ptrit<wchar_t,long,const wchar_t *,const wchar_t &,wchar_t *,wchar_t &>,std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > >(_Ptrit<wchar_t,long,const wchar_t *,const wchar_t &,wchar_t *,wchar_t &> &, _Ptrit<wchar_t,long,const wchar_t *,const wchar_t &,wchar_t *,wchar_t &>, basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > &).
        1500-029: (W) WARNING: subprogram std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Assign<std::_Ptrit<char,long,const char *,const char &,char *,char &> >(_Ptrit<char,long,const char *,const char &,char *,char &>, _Ptrit<char,long,const char *,const char &,char *,char &>, input_iterator_tag) could not be inlined into boost::offset_separator::operator() <std::_Ptrit<char,long,const char *,const char &,char *,char &>,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >(_Ptrit<char,long,const char *,const char &,char *,char &> &, _Ptrit<char,long,const char *,const char &,char *,char &>, basic_string<char,std::char_traits<char>,std::allocator<char> > &).
    vacpp.compile.c++ /applis/dsgu/datastage/data/lib/boost_1_39_0/ma_lib/date_time/boost/bin.v2/libs/date_time/build/vacpp/release/gregorian/greg_weekday.o
    vacpp.compile.c++ /applis/dsgu/datastage/data/lib/boost_1_39_0/ma_lib/date_time/boost/bin.v2/libs/date_time/build/vacpp/release/gregorian/date_generators.o
    vacpp.link.dll /applis/dsgu/datastage/data/lib/boost_1_39_0/ma_lib/date_time/boost/bin.v2/libs/date_time/build/vacpp/release/libboost_date_time-xlc-1_39.so
    ...updated 6 targets...
    Pourquoi cette différence de comportement entre les modes debug et release ?
    Quelle différence à part la taille et les warnings entre debug et release ?
    Comment peut-on spécifier le chemin de la librairie, parce que PREFIX/ma_lib/date_time/boost/bin.v2/libs/date_time/build/vacpp/release c'est un peu trop long ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 153
    Par défaut
    Pourquoi cette différence de comportement entre les modes debug et release ?
    Les options de compilations ne sont pas les mêmes.

    Quelle différence à part la taille et les warnings entre debug et release ?
    Les optimisations du compilateur, les initialisations mémoires, les informations de debug non présentes, et probablement plus

    Comment peut-on spécifier le chemin de la librairie, parce que PREFIX/ma_lib/date_time/boost/bin.v2/libs/date_time/build/vacpp/release c'est un peu trop long ?
    Regarde la dernière option, et le commentaire :

    Personnellement, j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bjam --with-date_time release stage
    qui permet de copier les lib dans un repertoire 'stage'. Ceci permet de ne pas avoir des options de compilation à rallonge.
    --
    Jérémie

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 198
    Par défaut
    Comme indiqué dans la documentation boost je lance d'abord bootstrap.sh avec les options adapté à mon système, puis je lance "bjam install".

    Si je lance directement bjam avec les options comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bjam --build-dir=/applis/dsgu/data/lib/boost_1_39_0/ma_lib/date_time release --with-date_time toolset=vacpp /applis/dsgu/data/lib/
    J'ai bien une version "release".
    Je ne trouve pas d'option dans boostrap pour sélectionner ce mode. Je dois donc lancer directement bjam avec toutes les options et sans lancer bootstrap avant ?
    Si je rajoute un répertoire dans la ligne de commande,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bjam --build-dir=/applis/dsgu/data/lib/boost_1_39_0/ma_lib/date_time release /applis/dsgu/data/lib/boost_1_39_0/malib --with-date_...
    j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    notice: could not find main target /applis/dsgu/data/lib/boost_1_39_0/malib
    notice: assuming it is a name of file to create.
    don't know how to make <e>/applis/dsgu/data/lib/boost_1_39_0/malib
    ...found 1 target...
    ...can't find 1 target...

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/02/2012, 15h22
  2. mode debug/release compilation
    Par julien25 dans le forum C++
    Réponses: 3
    Dernier message: 04/06/2009, 08h57
  3. Compiler en mode Debug avec ctest
    Par cham59 dans le forum Visual C++
    Réponses: 1
    Dernier message: 03/02/2009, 10h57
  4. Erreur de compilation sur une librairie en mode debug
    Par bakaneko dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/05/2006, 16h32
  5. Réponses: 2
    Dernier message: 27/03/2006, 17h18

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