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++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé 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
    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 !

  2. #2
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    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 éclairé 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
    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 ...

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

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

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

  5. #5
    Membre éclairé 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
    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 ?

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    760
    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 : 760
    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.

+ 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, 12h53
  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, 10h25
  3. Option Debug dans access
    Par uskiki85 dans le forum Access
    Réponses: 11
    Dernier message: 26/09/2005, 15h15
  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, 17h40

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