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 :

MinGW 4.7 ou Visual C++ 11(2012)


Sujet :

C++

  1. #1
    Membre habitué
    Homme Profil pro
    fdghg
    Inscrit en
    Avril 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : fdghg
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 66
    Points : 142
    Points
    142
    Par défaut MinGW 4.7 ou Visual C++ 11(2012)
    Bonjour,

    je commence un nouveau projet et je souhaite partir sur des outils à jour.

    Je développe uniquement sur Windows. Seulement j'hésite à choisir mon compilateur

    Je compte utilisé aussi Qt 5.0.2 (qui aura des binaires Vs 2012 ET MinGW 4.7)
    Et, peut-être boost

    Donc, j'hésite entre MinGW 4.7 ou Visual C++ 11 (Visual Studio 2012)

    QUID performance, compatibilité windows de MinGW ?

    Merci d'avance pour vos commentaires

  2. #2
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Points : 3 892
    Points
    3 892
    Par défaut
    Pour le reste je ne peux pas te répondre, mais pour le C++11 MinGW est clairement plus fourni. Je n'ai pas eu de problèmes de performances avec MinGW, mais je n'ai pas vraiment d'élément de comparaison.

  3. #3
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Hello,

    Visual Studio est un excellent IDE et probablement le meilleur sous Windows (après les goûts et les couleurs ... ). Le debugger de VS est aussi un cran au dessus de gdb.
    L'utilisation de MinGW avec VS n'est vraiment pas simple (même pas sur que se soit possible ?).

    Le seul problème de VS est le faible support de C++11 actuellement, mais si c'est un projet perso, le CTP de novembre ajoute pas mal de fonctionnalités (vu que c'est une preview, vaut mieux éviter pour un projet pro).

    MinGW n'a pas de problèmes de compatibilités avec Windows (à part Ogre, il me semble).
    Niveau performance, pas de soucis non plus.

    Au final, à toi de juger si le faible support de C++11 est plus ou moins important que la qualité de l'IDE (encore une fois, c'est subjectif, VS on l'aime ou on l'aime pas).

  4. #4
    Membre habitué
    Homme Profil pro
    fdghg
    Inscrit en
    Avril 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : fdghg
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 66
    Points : 142
    Points
    142
    Par défaut
    Quel rapport avec l'IDE ? Je peux très compiler mon application Visual C++ 11 avec QtCreator, ou C::B

  5. #5
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Quand on parle de VS, on parle souvent de l'IDE complet, pas du compilateur. Et sans précision, on parle aussi souvent de la version non Express (il y a du coup parfois des incompréhensions dans les discussions...)

    Donc si c'est que le compilateur qui t'intéresse, VSC++ Express convient et les arguments sur l'IDE n'ont pas d'intérêt
    Les autres remarques de Iradrille sur le débogueur et la compatibilité de mingw restent valables.

    Tu as un tableau relativement à jour sur la comparaison du support du C++11 là : http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport (mise à jour en décembre)

    Petite remarque concernant la portabilité : le langage est portable (= supporté correctement par plusieurs compilateurs sur plusieurs plateformes), Qt est portable, boost est portable. Bref, tout est portable.
    Alors même si tu bosses que sur Windows, écris du code portable quand même (sauf si tu fais de la programmation système ou autre truc tordu)

    Tu peux également t'amuser à tester gcc 4.8, qui améliore encore plus le support du C++11, tu peux trouver les binaires là : http://www.equation.com/servlet/equation.cmd?fa=fortran

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    MinGW EST un compilateur pour Windows. La question de la compatibilité ne se pose pas. Dès lors que du code n'utilise pas des extensions spécifiques à VS (et encore... certaines ont été implémentées), alors le code peut être compilé par MinGW.

    Un article datant de l'année dernière donne une vision des performances relatives de VC++ 2010 et MinGW. D'après les graphes obtenus par hardware.fr, il y a une différence de l'ordre de 5% entre cl (Visual C++) et MingGW - ce qui est somme toute correct. Dans certains cas, le rapport de force est inversé (MinGW produit un exe plus rapide que cl) et dans d'autres, la différence est plus importante (cl peut générer du code 10, 15% plus rapide que MinGW).

    Ceci dit, tu veux faire du Qt. Donc, à priori, du code de gestion d'une interface graphique. Tu vas passer plus de temps à attendre les ordre de l'utilisateur (souris, clavier) qu'à faire des choses qui nécessite des performances vraiment poussées. Du coup, un gain de 5% ne sera pas vraiment des plus intéressants...

    Au niveau du support C++11, il vaut mieux utiliser g++ - sauf que certains points très importants manquent encore (std::regex, move ctor sur les stream de la librairie standard, ...). D'un autre coté, le dernier CTP rajoute pas mal de petites choses qui le rapprochent de g++ en la matière. En fait, il faudra que tu vérifies le corpus de fonctionnalités dont tu auras besoin - et là tu pourras faire ton choix.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  7. #7
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Points : 3 892
    Points
    3 892
    Par défaut
    On a le droit de jouer avec les mots ?
    MinGW n'est pas un compilateur C++. C'est g++ le compilateur.

    Sinon j'appuie les dires d'Emmanuel Deloget

  8. #8
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Citation Envoyé par nostrora Voir le message
    Quel rapport avec l'IDE ? Je peux très compiler mon application Visual C++ 11 avec QtCreator, ou C::B
    Oui bien sur, mais la principale valeur ajoutée de VS est l'IDE qui vient avec.

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Points : 258
    Points
    258
    Par défaut
    Hello,

    contrairement à VC++, minGW ne supporte pas les threads de C++11. Si tu en as besoin, il faudra passer par boost::thread ou Qthread.

  10. #10
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Si, mingw prend en charge les threads. La seule chose (sans importance pour l'utilisateur), c'est que c'est un wrapper sur d'autres libs de threads (pthread sur linux, les threads système sur windows)

    Mais il y a d'autres choses que mingw ne gère pas directement, comme les regex

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Points : 258
    Points
    258
    Par défaut
    Citation Envoyé par gbdivers Voir le message
    Si, mingw prend en charge les threads. La seule chose (sans importance pour l'utilisateur), c'est que c'est un wrapper sur d'autres libs de threads (pthread sur linux, les threads système sur windows)

    Mais il y a d'autres choses que mingw ne gère pas directement, comme les regex
    Ah... j'avais pourtant essayé (avec 4.6.3 me semble-t-il)
    et le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::thread::hardware_concurrency()
    me renvoyait inlassablement 0

    Peut être faut-il faire un build spécifique ?

  12. #12
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    J'avais essayé aussi avec mingw 0.1.5 alpha, ça marchait pas non plus...

    Je saurais pas dire de quand date l'ajout, il faut regarder dans la doc de gcc, probablement que cela date de 4.7.

    Sinon, deux autres tableaux comparatifs, qui contient en particulier la comparaison de la STL : http://cpprocks.com/c11-compiler-sup...c-clang-intel/
    GCC a un peu de retard sur VS et Cling pour la STL, par contre, elle se rattrape largement sur le support du langage

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Points : 258
    Points
    258
    Par défaut
    Citation Envoyé par gbdivers Voir le message
    J'avais essayé aussi avec mingw 0.1.5 alpha, ça marchait pas non plus...
    En fait non ça ne renvoyait pas 0, ça ne compilait pas. Et là j'ai essayé avec 4.7.2 (qui est relativement récent) et idem
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    C:\MinGW\bin>"mingw32-c++.exe" -v
    Utilisation des specs internes.
    COLLECT_GCC=mingw32-c++.exe
    COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/4.7.2/lto-wrapper.exe
    Target: mingw32
    Configuré avec: ../gcc-4.7.2/configure --enable-languages=c,c++,ada,fortran,objc,obj-c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgomp --disable-win32-registry --enable-libs
    tdcxx-debug --disable-build-poststage1-with-cxx --enable-version-specific-runtime-libs --build=mingw32 --prefix=/mingw
    Modèle de thread: win32
    gcc version 4.7.2 (GCC)
    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
    #include <iostream>
    #include <thread>
    #include <boost/thread.hpp>
     
    int main(int argc, char *argv[])
    {
     
        std::cout << "C++ vesrion: " << __cplusplus << std::endl;
     
        std::cout << "Std hardware concurrency: " << std::thread::hardware_concurrency() << std::endl;
     
        std::cout << "Boost hardware concurrency: " << boost::thread::hardware_concurrency() << std::endl;
     
        return 0;
    }
    La compilation échoue lamentablement avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ..\sources\main.cpp:10:51: error: 'std::thread' has not been declared
    en mettant la ligne 10 en commentaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C++ vesrion: 201103
    Boost hardware concurrency: 4
    EDIT: peut-être y a-t-il des builds custom de minGW pour lesquels ça marche. Moi j'ai pris la version standard sur http://www.mingw.org/

  14. #14
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Chez moi ça compile, avec la même version de mingw

    Tu compiles comment ? (options de compilation)

    EDIT : j'utilise la version fournit avec Qt, c'est la version standard aussi

  15. #15
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Points : 3 892
    Points
    3 892
    Par défaut
    à noter pour la défense de g++ sur sa stdlibc++ par rapport à libc++ de clang (et non pas cling) c'est que libc++ n'est complète que pour Mac OS X...
    En espérant que les prochaines versions des deux lib amènent un plus grand support, voire (on a le droit de rêver ) un support complet sur les 3 plateformes...

    Et la version standard de MinGW n'est pas la dernière, c'est la 4.6 et quelques. Il y a un bouton à cocher pour obtenir la dernière pendant l'installation.

  16. #16
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Points : 258
    Points
    258
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    g++ -c -std=gnu++11 -DBOOST_THREAD_USE_LIB -D_WIN32_WINNT=0x0601 
         -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT 
         -D_DEBUG -I"..\..\..\boost" -I"..\project" -I"." -I"..\..\..\QtSDK\Desktop\Qt\4.8.0\mingw\mkspecs\win32-g++" 
         -o debug\main.o ..\sources\main.cpp

  17. #17
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Perso, j'aime pas les regex et je sais pas trop ce que sont les "Concurrency: relaxed memory ordering and fences", donc pour moi, l'un ou l'autre, c'est pareil
    Par contre, il faudrait que j'aille voir à quoi correspond exactement ce support partiel de type trait

    Niveau langage, entre gcc et Clang, il n'y a que le manque des constructeurs délégés dans Clang qui me gène. Dans VS, il y a encore trop de manque pour moi (alias template, delete, default, constexpr, initialisation des membres non static, noexcept, qui sont pour moi des fonctionnalités utilisables "dans la vie de tous les jours")

    Sinon, je crois pas que gcc a besoin d'être défendu
    Mais s'il le fallait quand même, je dirais qu'un gros boulot de gcc 4.8 a été le passage au C++. Maintenant que c'est fait, on aura probablement plus de nouvelles fonctionnalités implémentées (en particulier les propositions du C++1y ?)

  18. #18
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Points : 3 892
    Points
    3 892
    Par défaut
    Ah oui tiens, c'est vrai que gcc est passé au C++...
    Pour les proposals ça me fait penser que y'en a une floppée qui sont sortis ces jour-ci, dont certains très intéressant !

  19. #19
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Des proposales du comité ? Je crois pas (ou alors tu parles de la préparation de la prochaine conf, les drafts ont été publiés... mais mieux veut lire les drafts après la conf )
    J'ai vu qu'il était passé à 10 SG (j'étais resté à 8 dans ma mémoire je crois)


    @GeantVert13
    Bon, tu utilises aussi Qt (par contre, faudrait passer à Qt 5. Ou au moins à une version plus récente que Qt 4.8.0 )

    Mes options :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    g++ -c -std=c++11 -g -frtti -Wall -Wextra -fexceptions -mthreads 
        -DUNICODE -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG 
        -I..\test-thread -I"." -I"..\..\..\..\Qt\Qt5.0.1\5.0.1\mingw47_32\mkspecs\win32-g++" 
        -o debug\main.o ..\test-thread\main.cpp
    A part les options pour boost, je vois pas trop

  20. #20
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    C'est quoi "-D_WIN32_WINNT=0x0601 " ?

Discussions similaires

  1. Visual Studio Express 2012 et OpenGL
    Par Le Furet dans le forum Visual C++
    Réponses: 5
    Dernier message: 07/08/2013, 00h57
  2. Réponses: 3
    Dernier message: 08/07/2013, 00h02
  3. Visual studio express 2012 probleme licence
    Par Colaly dans le forum Visual Studio
    Réponses: 1
    Dernier message: 09/04/2013, 16h27
  4. [Débutant] Demande info Visual Studio express 2012.
    Par fraxinus13 dans le forum Visual Studio
    Réponses: 0
    Dernier message: 23/02/2013, 15h33
  5. Visual studio 2010 ==> 2012
    Par Muide dans le forum Visual Studio
    Réponses: 3
    Dernier message: 21/09/2012, 17h59

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