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

C++ Discussion :

Cmake, boost, et no debug option


Sujet :

C++

  1. #1
    Membre averti Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Points : 341
    Points
    341
    Par défaut Cmake, boost, et no debug option
    Bonjour à toutes et à tous !

    Quand je compile mon script avec cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g++ -Wall -o3 main_1.cpp -std=c++17 -DNDEBUG -DBOOST_UBLAS_NDEBUG -I/usr/include/gdal  -L/usr/lib/ -lgdal -I/home/becheler/dev
    Tout se passe bien, et ça tourne en quelques secondes.

    Mais quand j'essaie de faire la même avec un CMakeLists.txt, baaaah, ça compile mais ça met une plombe à l'exécution. Je dois mal m'y prendre avec cmake parce que l'option -DBOOST_UBLAS_NDEBUG semble ne pas être prise en compte (j'ai de bonnes raisons de croire que l'énorme ralentissement du code que j'ai proviens de là). J'ai essayé de bidouiller en tentant différents trucs mais ... fail !

    Pourriez-vous m'aider je vous prie ? Voici mon CMakeLists.txt actuel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    cmake_minimum_required(VERSION 2.8)
     
    project(quetzal)
     
    add_compile_options(-Wall -pedantic-errors -Wextra -std=c++17 -ofast)
     
    FIND_PACKAGE(Boost)
    IF (Boost_FOUND)
        INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
        ADD_DEFINITIONS( "-DHAS_BOOST -DBOOST_UBLAS_NDEBUG" ) # ça semble pas marcher
    ENDIF()
     
    # j'ai aussi essayé
    # add_definitions(-DBOOST_UBLAS_NDEBUG) #sans plus de succès
     
    FIND_PACKAGE(GDAL)
    IF (GDAL_FOUND)
        INCLUDE_DIRECTORIES(${GDAL_INCLUDE_DIR})
    ENDIF()
     
    include_directories( ./ )
     
    add_executable(expansion_1 documentation/code_examples/expansion/main_1.cpp)
    TARGET_LINK_LIBRARIES(expansion_1 LINK_PUBLIC ${GDAL_LIBRARY} )
    Merci !
    Le débutant, lui, ignore qu'il ignore à ce point, il est fier de ses premiers succès, bien plus qu'il n'est conscient de l'étendue de ce qu'il ne sait pas, dès qu'il progresse en revanche, dès que s'accroît ce qu'il sait, il commence à saisir tout ce qui manque encore à son savoir. Qui sait peu ignore aussi très peu. [Roger Pol-Droit]
    Github
    Mon tout premier projet: une bibliothèque de simulation de génétique des populations

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 958
    Points
    32 958
    Billets dans le blog
    4
    Par défaut
    Ça n'a peut-être rien à voir mais pourquoi les quotes autour des définitions ?
    https://cmake.org/cmake/help/v3.8/co...finitions.html

    j'ai de bonnes raisons de croire que l'énorme ralentissement du code que j'ai proviens de là
    Quelles sont ces raisons ?
    L'exe compilé a-t-il une taille significativement différente ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre averti Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Points : 341
    Points
    341
    Par défaut
    J'ai enlevé les guillemets, cela n'a rien changé.

    Quelles sont ces raisons ?
    L'exe compilé a-t-il une taille significativement différente ?
    Compilé avec Cmake, l'exé a une taille de 230.9 kB
    Compilé a la main, l'exé a une taille de 1.2 MB.

    Je faisais pour ma part plutôt allusion a d'anciennes galères d’exécution de programme interminable, qui avait été résolu avec avec cette fameuse option de compilation -DBOOST_UBLAS_NDEBUG.
    L'explication vaut ce qu'elle vaut ...
    Le débutant, lui, ignore qu'il ignore à ce point, il est fier de ses premiers succès, bien plus qu'il n'est conscient de l'étendue de ce qu'il ne sait pas, dès qu'il progresse en revanche, dès que s'accroît ce qu'il sait, il commence à saisir tout ce qui manque encore à son savoir. Qui sait peu ignore aussi très peu. [Roger Pol-Droit]
    Github
    Mon tout premier projet: une bibliothèque de simulation de génétique des populations

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 059
    Points : 12 095
    Points
    12 095
    Par défaut
    C'est pas la version "-g" que vous générez via Cmake ???

  5. #5
    Membre averti Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Points : 341
    Points
    341
    Par défaut
    Salut bacelar

    Si par la tu entends que je n'ai pas rajoute l'option -DNDEBUG, c'est parce que j'appelle cmake avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cmake -DCMAKE_BUILD_TYPE=Release ..
    make
    Ce qui normalement devrait rajouter l'option -DNDEBUG, non ?
    Le débutant, lui, ignore qu'il ignore à ce point, il est fier de ses premiers succès, bien plus qu'il n'est conscient de l'étendue de ce qu'il ne sait pas, dès qu'il progresse en revanche, dès que s'accroît ce qu'il sait, il commence à saisir tout ce qui manque encore à son savoir. Qui sait peu ignore aussi très peu. [Roger Pol-Droit]
    Github
    Mon tout premier projet: une bibliothèque de simulation de génétique des populations

  6. #6
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 739
    Points : 3 627
    Points
    3 627
    Par défaut
    Pas sûr que tu compares les bons exécutables. Sur la ligne de commande de gcc il y a -o3 et dans le CmakeLists -ofast. Or, -o est l'option pour nommé le fichier de sortie, celle pour les optimisations est en majuscule: -O.

    Tu peux faire make VERBOSE=1 pour avoir les lignes de compilation, et voir s'il manque vraiment -DHAS_BOOST -DBOOST_UBLAS_NDEBUG.

    -DCMAKE_BUILD_TYPE=Release active bien NDEBUG. Pour bien faire, il faudrait aussi que -Ofast ne s'active qu'en Realease, par défaut ce doit être un -O2.

    Il faut utiliser set(CMAKE_CXX_STANDARD 17) à la place de -std=c++17. Sans, cmake peut définir une autre version du standard.

  7. #7
    Membre averti Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Points : 341
    Points
    341
    Par défaut
    Citation Envoyé par jo_link_noir Voir le message
    Pas sûr que tu compares les bons exécutables. Sur la ligne de commande de gcc il y a -o3 et dans le CmakeLists -ofast. Or, -o est l'option pour nommé le fichier de sortie, celle pour les optimisations est en majuscule: -O.

    Ah ouais. Omg. Violent. Beuah. Ca fait juste 3 ans que je renomme mes fichiers au lieu de les optimiser. La grande claaasse.
    En tout cas merci d'avoir relevé cette mécompréhension typographique, en vrai je trouvais curieux que l'option d'optimisation change aussi le nom de l'exécutable. Prrrrffff je m'auto-gonfle.

    Citation Envoyé par jo_link_noir Voir le message
    Tu peux faire make VERBOSE=1 pour avoir les lignes de compilation, et voir s'il manque vraiment -DHAS_BOOST -DBOOST_UBLAS_NDEBUG.
    Merci je vais faire ça !

    Citation Envoyé par jo_link_noir Voir le message
    -DCMAKE_BUILD_TYPE=Release active bien NDEBUG. Pour bien faire, il faudrait aussi que -Ofast ne s'active qu'en Realease, par défaut ce doit être un -O2.
    Ah oui pas bête !

    Citation Envoyé par jo_link_noir Voir le message
    Il faut utiliser set(CMAKE_CXX_STANDARD 17) à la place de -std=c++17. Sans, cmake peut définir une autre version du standard.
    "Définir une autre version du standard"... Cette phrase me laisse décidément songeur... Mais ok je fais ça !
    Le débutant, lui, ignore qu'il ignore à ce point, il est fier de ses premiers succès, bien plus qu'il n'est conscient de l'étendue de ce qu'il ne sait pas, dès qu'il progresse en revanche, dès que s'accroît ce qu'il sait, il commence à saisir tout ce qui manque encore à son savoir. Qui sait peu ignore aussi très peu. [Roger Pol-Droit]
    Github
    Mon tout premier projet: une bibliothèque de simulation de génétique des populations

  8. #8
    Membre averti Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Points : 341
    Points
    341
    Par défaut
    Bon, de retour du front.
    J'ai suivi les conseils de jo_link_noir, et après quelques bidouilles pour faire coincider les lignes de compilation, je suis arrivé à faire tourner la bestiole. Ce que je trouve bizarre, c'est qu'activer une option d'optimisation fait buguer (ou ralentir) le programme
    Un avis là dessus ?

    CMakeLists.txt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    cmake_minimum_required(VERSION 2.8)
     
    project(quetzal)
     
    set(CMAKE_CXX_STANDARD 17)
    add_compile_options(-Wall -pedantic-errors -Wextra -DNDEBUG)
     
    FIND_PACKAGE(Boost)
    IF (Boost_FOUND)
        INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
        ADD_DEFINITIONS(-DBOOST_UBLAS_NDEBUG)
    ENDIF()
     
    FIND_PACKAGE(GDAL)
    IF (GDAL_FOUND)
        INCLUDE_DIRECTORIES(${GDAL_INCLUDE_DIR})
    ENDIF()
     
    include_directories( ./ )
     
    add_executable(expansion_1 documentation/code_examples/expansion/main_1.cpp)
    TARGET_LINK_LIBRARIES(expansion_1 LINK_PUBLIC ${GDAL_LIBRARY} )
    Un bout de la sortie du cmake VERBOSE=1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /usr/bin/c++  -DBOOST_UBLAS_NDEBUG -I/usr/include/gdal -I/home/becheler/dev/quetzal/.  -Wall -pedantic-errors -Wextra -DNDEBUG -std=gnu++1z -o CMakeFiles/expansion_1.dir/documentation/code_examples/expansion/main_1.cpp.o -c /home/becheler/dev/quetzal/documentation/code_examples/expansion/main_1.cpp
    Le débutant, lui, ignore qu'il ignore à ce point, il est fier de ses premiers succès, bien plus qu'il n'est conscient de l'étendue de ce qu'il ne sait pas, dès qu'il progresse en revanche, dès que s'accroît ce qu'il sait, il commence à saisir tout ce qui manque encore à son savoir. Qui sait peu ignore aussi très peu. [Roger Pol-Droit]
    Github
    Mon tout premier projet: une bibliothèque de simulation de génétique des populations

  9. #9
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 739
    Points : 3 627
    Points
    3 627
    Par défaut
    Étrange, il n'y a aucune option d'optimisation dans ce que tu donnes. Tu es bien dans un dossier initialisé avec cmake -DCMAKE_BUILD_TYPE=Release ? Ou alors les options par défaut sont à la ramasse .

    Tu peux regarder dans le fichier CMakeCache.txt les options associées à chaque type de build et au besoin les modifier.

  10. #10
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 186
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 186
    Points : 17 126
    Points
    17 126
    Par défaut
    Commence par utiliser cmake avec une version moins périmée, donc, exige au moins la "3.0"
    Auquel cas, tu auras accès aux définitions de propriétés. Ca te sera utile lorsque tu commenceras à écrire des bibliothèques.

    Code cmake : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    cmake_minimum_required(VERSION 3.8) # première version à supporter C++17
     
    project(quetzal)
     
    find_package(Boost)
    find_package(GDAL)
     
    # force all compilation in this project with those options.
    add_compile_options(-Wall -pedantic-errors -Wextra)
     
    add_executable(expansion_1 documentation/code_examples/expansion/main_1.cpp)
    set_target_properties(expansion_1 PROPERTIES CXX_EXTENSIONS OFF) # prefer iso standards to compiler extensions ones.
    target_compile_features(expansion_1 PUBLIC cxx_std_17)
     
    target_include_directories(expansion_1 PRIVATE .)
     
    if(Boost_FOUND)
      target_include_directories(expansion_1 PRIVATE ${Boost_INCLUDE_DIR})
      target_compile_definitions(expansion_1 PRIVATE BOOST_UBLAS_NDEBUG)
    endif()
     
    if(GDAL_FOUND)
      target_include_directories(expansion_1 PRIVATE ${GDAL_INCLUDE_DIR})
      target_link_libraries(expansion_1 PUBLIC ${GDAL_LIBRARY} )
    endif()

    Ensuite, je t'invite à lire la documentation sur les "CMAKE_BUILD_TYPE", dont la valeur par défaut est "aucun réglages"
    CMAKE_BUILD_TYPE=Release permet de rajouter des options "-O3 -DNDEBUG" (en général).

    Et n'hésite pas à utiliser ccmake pour éditer ton cache ou même faire ta génération.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  11. #11
    Membre régulier

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2003
    Messages : 120
    Points : 82
    Points
    82
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jo_link_noir Voir le message
    Il faut utiliser set(CMAKE_CXX_STANDARD 17) à la place de -std=c++17. Sans, cmake peut définir une autre version du standard.
    merci pour l'astuce ! ^^
    Ubuntu fan depuis la 8.04
    monnaie libre

  12. #12
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 611
    Points
    30 611
    Par défaut
    Salut,

    Juste un truc:

    Quand tu places la ligne
    Citation Envoyé par ternel Voir le message
    Code cmake : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <snip>
    add_compile_options(-Wall -pedantic-errors -Wextra)
    <snip>
    Tu forces l'utilisation d'options spécifiques à Gcc (et, heureusement supportées par clang) quel que soit le compilateur considéré.

    Ce n'est pas catastrophique tant que tu n'envisage d'utiliser que ces deux compilateurs, mais ce sont des options qui risquent d'être rejetées en bloc par VC++, pour ne citer que celui là

    De plus, cela fait déjà plusieurs versions de Gcc que l'on conseille d'utiliser l'option --all-warnings à la place de -Wall et l'option --extra-warnings à la place de -WextraJe sais bien que Wall et Wextra sont les options "historiques", mais, comme on ne peut pas garantir qu'elles ne seront pas supprimées dans le futur (du simple fait qu'il existe une alternative plus récente), il me semble préférable d'utiliser --all-warnings et --extra-warnings
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  13. #13
    Expert éminent
    Avatar de Pyramidev
    Homme Profil pro
    Développeur
    Inscrit en
    Avril 2016
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 460
    Points : 6 064
    Points
    6 064
    Par défaut
    Citation Envoyé par koala01 Voir le message
    De plus, cela fait déjà plusieurs versions de Gcc que l'on conseille d'utiliser l'option --all-warnings à la place de -Wall et l'option --extra-warnings à la place de -WextraJe sais bien que Wall et Wextra sont les options "historiques", mais, comme on ne peut pas garantir qu'elles ne seront pas supprimées dans le futur (du simple fait qu'il existe une alternative plus récente), il me semble préférable d'utiliser --all-warnings et --extra-warnings
    Dans la documentation de GCC 8.2 sur les avertissements, je ne vois ni --all-warnings, ni --extra-warnings.

  14. #14
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 611
    Points
    30 611
    Par défaut
    Faut les cherchr un peu

    Ma version de Gcc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    gcc -v
    Utilisation des specs internes.
    COLLECT_GCC=gcc
    COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/8/lto-wrapper
    OFFLOAD_TARGET_NAMES=nvptx-none
    OFFLOAD_TARGET_DEFAULT=1
    Cible : x86_64-linux-gnu
    Configuré avec: ../src/configure -v --with-pkgversion='Debian 8.2.0-9' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
    Modèle de thread: posix
    gcc version 8.2.0 (Debian 8.2.0-9)
    Demandons l'aide au sujet des warnings
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    gcc --help=warnings
    Les options suivantes contrôlent les messages d’avertissement du compilateur:
      --all-warnings              Comme -Wall. Utilisez plutôt cette dernière
                                  option.
      --extra-warnings            Comme -Wextra. Utilisez plutôt cette dernière
                                  option.
      -W                          This switch is deprecated; use -Wextra instead. 
                                  Comme -Wextra.
    (...)
      -Wextra                     Afficher des avertissements complémentaires (au
                                  risque qu'ils soient non désirés).
    Bon, ce n'est pas dans la doc officielle (qui manque de mise à jour, de toute évidence), mais, comme c'est dans l'aide officielle du programme, on devrait pouvoir s'y fier, non?
    [/CODE]
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  15. #15
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 739
    Points : 3 627
    Points
    3 627
    Par défaut
    --all-warnings Comme -Wall. Utilisez plutôt cette dernière option.
    La dernière fait référence à -Wall.

    S'il faut les chercher c'est bien parce que personne ne les recommande, rien que dans les derniers changelogs il y a plusieurs références à -Wall. Ce qui est plutôt logique puisque les options de gcc sont avec un seul tiret et les avertissements préfixés de W. --all-warnings et --extra-warnings sont des extraterrestres là-dedans.

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

Discussions similaires

  1. CMake, boost 1.55.0, Visual 2015, 2013
    Par Suryavarman dans le forum Visual C++
    Réponses: 6
    Dernier message: 04/06/2017, 13h53
  2. [VC++6][DLL][WinXP]option de compilation debug/release
    Par ben_popcorn dans le forum Visual C++
    Réponses: 7
    Dernier message: 02/02/2007, 11h25
  3. Option Debug dans access
    Par uskiki85 dans le forum Access
    Réponses: 11
    Dernier message: 26/09/2005, 16h15
  4. Différences entre Debug et Retail dans le fichier d'options
    Par zoubidaman dans le forum C++Builder
    Réponses: 3
    Dernier message: 08/04/2005, 18h40

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