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

Outils Discussion :

Utilisation de -std=gnu++14


Sujet :

Outils

  1. #1
    Invité
    Invité(e)
    Par défaut Utilisation de -std=gnu++14
    Bonjour à tous,

    N'ayant pas trouver de rubrique adéquate sur le site je me permets de poser ici la question suivante.Je viens de télécharger et d'installer Qt Creator 3.4.1 opensource sur un Mac ou je développe en C++. J'utilise d'habitude le compilateur suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    g++ --version
    Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
    Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
    Target: x86_64-apple-darwin14.3.0
    Thread model: posix
    L'idée est de réutiliser les sources que j'ai déjà écrites dans des applications console et de les greffer sur un GUI développé avec Qt. Le souci est que j'utilise une version assez récente de C++ (2014) et que j'ai besoin de librairies comme <random> ou <numeric>. Quand je crée une application simple dans QtCreator, la complétion automatique me propose bien les #include <random> par exemple mais ensuite il m'annonce l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ../test/main.cpp:2:10: fatal error: 'random' file not found
    #include <random>
             ^
    1 error generated.
    J'ai essayé de choisir les compilateurs et kits de la façon suivante:

    Nom : Capture d’écran 2015-06-18 à 15.50.07.png
Affichages : 232
Taille : 128,8 KoNom : Capture d’écran 2015-06-18 à 15.50.33.png
Affichages : 216
Taille : 163,0 Ko

    et j'ai également ajouté les paramètres suivants dans le fichier .pro:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CONFIG += c++14
    QMAKE_CXXFLAGS += -std=c++14
    Mais rien n'y fait. Quelqu'un pourrait me dire comment résoudre ce problème ? Merci d'avance

    HP.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Quelle est la version de GCC que vous utilisez.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Bonjour,

    Quelle est la version de GCC que vous utilisez.
    Bonjour

    Si vous faites allusion au compilateur que j'ai utilisé jusqu'à présent pour mes sources c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    g++ --version
    Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
    Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
    Target: x86_64-apple-darwin14.3.0
    Thread model: posix
    situé dans /usr/bin

    Dans Qt j'ai testé avec ce que l'IDE a identifié comme compilateurs présents qui sont sur la figure n°1 que j'ai posté. Est-ce que cela répond à votre question ?

    HP.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Merci.

    Lorsque vous avez rajouter les lignes dans le .pro, avez vous bien relancer qmake ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Oui et je viens de retester à l'instant. Je crée une appli console par défaut et j'ajoute les lignes dans le .pro. Je sauvegarde. La compilation se lance bien (heureusement) mais quand j'ajoute par exemple #include<random> dans le main.cpp la compilation ne se fait pas car il ne trouve pas random. Alors alors que les mêmes commandes en mode console (/usr/bin/g++ et /usr/bin/clang++ marchent très bien sur le même code source.

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Pouvez-vous donner la sortie complète du compilateur lorsque lancé dans Qt Creator.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bien sûr

    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
    12:05:23: Exécution des étapes pour le projet test...
    12:05:23: Débute : "/Applications/Qt5.4.2/5.4/clang_64/bin/qmake" /Users/yyy/Desktop/test/test.pro -r -spec macx-clang CONFIG+=debug CONFIG+=x86_64
    Info: creating stash file /Users/yyy/Desktop/build-test-Desktop_Qt_5_4_2_clang_64bit-Debug/.qmake.stash
    12:05:24: Le processus "/Applications/Qt5.4.2/5.4/clang_64/bin/qmake" s'est terminé normalement.
    12:05:24: Débute : "/usr/bin/make" 
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -c -pipe -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -mmacosx-version-min=10.7 -Wall -W -fPIC -DQT_CORE_LIB -I../test -I. -I/Applications/Qt5.4.2/5.4/clang_64/lib/QtCore.framework/Versions/5/Headers -I. -I/Applications/Qt5.4.2/5.4/clang_64/mkspecs/macx-clang -F/Applications/Qt5.4.2/5.4/clang_64/lib -o main.o ../test/main.cpp
    ../test/main.cpp:2:10: fatal error: 'random' file not found
    #include <random>
             ^
    1 error generated.
    make: *** [main.o] Error 1
    12:05:24: Le processus "/usr/bin/make" s'est terminé avec le code 2.
    Erreur lors de la compilation/déploiement du projet test (kit : Desktop Qt 5.4.2 clang 64bit)
    When executing step "Make"
    12:05:24: Temps écoulé : 00:01.
    Je crois qu'une partie du problème vient ici de ce que je maîtrise pas le qmake.

  8. #8
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Dans la ligne de compilation :
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -c -pipe -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -mmacosx-version-min=10.7 -Wall -W -fPIC -DQT_CORE_LIB -I../test -I. -I/Applications/Qt5.4.2/5.4/clang_64/lib/QtCore.framework/Versions/5/Headers -I. -I/Applications/Qt5.4.2/5.4/clang_64/mkspecs/macx-clang -F/Applications/Qt5.4.2/5.4/clang_64/lib -o main.o ../test/main.cpp
    Il n'y a pas le flag pour le support du C++14.

    Pouvez vous me montrer l'intégralité du .pro, s'il vous plait.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Oui le voilà:

    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
    #-------------------------------------------------
    #
    # Project created by QtCreator 2015-06-19T12:05:08
    #
    #-------------------------------------------------
     
    QT       += core
    QT       -= gui
     
    TARGET = test
     
    CONFIG   += console
    CONFIG   -= app_bundle
    CONFIG += c++14
     
    QMAKE_CXXFLAGS += -std=c++14
     
    TEMPLATE = app
     
    SOURCES += main.cpp
    Et je remets aussi le résultat de compilation car en générant une nouvelle appli j'avais oublié de rajouter ces 2 lignes mais le résultat est le même à première vue.

    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
    12:16:51: Exécution des étapes pour le projet test...
    12:16:51: Débute : "/usr/bin/make" clean
    rm -f main.o
    rm -f *~ core *.core
    12:16:51: Le processus "/usr/bin/make" s'est terminé normalement.
    12:16:51: Configuration inchangée, étape qmake sautée.
    12:16:51: Débute : "/usr/bin/make" 
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -c -pipe -std=c++14 -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -mmacosx-version-min=10.7 -std=c++1y -Wall -W -fPIC -DQT_CORE_LIB -I../test -I. -I/Applications/Qt5.4.2/5.4/clang_64/lib/QtCore.framework/Versions/5/Headers -I. -I/Applications/Qt5.4.2/5.4/clang_64/mkspecs/macx-clang -F/Applications/Qt5.4.2/5.4/clang_64/lib -o main.o ../test/main.cpp
    ../test/main.cpp:2:10: fatal error: 'random' file not found
    #include <random>
             ^
    1 error generated.
    make: *** [main.o] Error 1
    12:16:52: Le processus "/usr/bin/make" s'est terminé avec le code 2.
    Erreur lors de la compilation/déploiement du projet test (kit : Desktop Qt 5.4.2 clang 64bit)
    When executing step "Make"
    12:16:52: Temps écoulé : 00:01.

  10. #10
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Alors là, je ne vois pas du tout, surtout que vous dites que cela marche dans le terminal
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Il semblerait que j'ai trouvé un mouton à 5 pattes
    Oui cela fonctionne dans le terminal. Ce que je ne comprends pas c'est pourquoi l'autocomplétion me le propose (quand je rajoute le #include<random> dans la fenêtre de codage de QtCreator) pourquoi le g++ et le clang++ reconnaissent tous les deux cette librairie (les commandes de mon Makefile sont du type g++ -Ofast -std=gnu++14 -o main.o -c main.cpp -Wall -g) et quand je compile depuis QtCreator il me dit zut.
    Merci quand même d'avoir essayé de m'aider

  12. #12
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Je viens de voir, dans la commande que fait QtCreator il rajoute :
    -std=c++1y
    (je ne sais pas pourquoi.)
    Peut être c'est ce qui fait que tout va mal ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  13. #13
    Invité
    Invité(e)
    Par défaut
    Je pense que "y" est un joker pour le chiffre de l'année mais je ne sais pas où dans QtCreator on peut modifier cette valeur à part dans le .pro

  14. #14
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 696
    Points : 2 439
    Points
    2 439
    Par défaut
    En fait, C++1y veut dire C++14.

    Il faut savoir que la nouvelle version avait initialement pour nom C++1y, y car on ne savait pas encore en quelle année elle sortirai. Ce n'est que plus tard qu'on a remplacé y par 4 pour 2014. Il s'est d'ailleurs passé la même chose pour C++11 (au début C++0x).

    Donc pas d'inquiétudes, le compilateur comprend bien qu'il s'agit du C++14.
    Je fais appel aux esprits de Ritchie, Kernighan, Stroustrup et Alexandrescu
    Donnez moi la force, donnez moi le courage de coder proprement !

    « Ça marche pas » n'est PAS une réponse convenable, merci de détailler le souci en fournissant l’environnement, le code source, les commandes et les messages d'erreur.

    Ce club possède également un clavardage, on y trouve quelques perles entre deux sessions d'entraides.

  15. #15
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Daïmanu Voir le message
    Donc pas d'inquiétudes, le compilateur comprend bien qu'il s'agit du C++14.
    Merci de ces précisions . Il comprend peut-être de quel compilateur il s'agit mais reste fâché avec les librairies de la C++2014 hélas.

Discussions similaires

  1. Vendre un produit utilisant une licence GNU
    Par laclac dans le forum Licences
    Réponses: 3
    Dernier message: 18/09/2007, 17h42
  2. utilisation de std::find( string )
    Par ccensam dans le forum SL & STL
    Réponses: 1
    Dernier message: 24/11/2006, 22h07
  3. utilisation des std::map
    Par guillaume16 dans le forum SL & STL
    Réponses: 9
    Dernier message: 25/07/2006, 16h56
  4. utilisation de std::
    Par piteon dans le forum SL & STL
    Réponses: 7
    Dernier message: 08/06/2006, 14h31
  5. 3 précisions sur l'utilisation des "std::vector"
    Par Invité dans le forum SL & STL
    Réponses: 9
    Dernier message: 10/01/2006, 00h42

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