Partage
  • Partager sur Facebook
  • Partager sur Twitter

Configuer Qt Creator pour utiliser SFML

Sujet résolu
    30 août 2013 à 17:13:36

    Bonjour,

    le plus spectaculaire que j'ai pour l'instant accompli avec la SFML, c'est de la télécharger ( http://www.sfml-dev.org/download/sfml/2.1/index-fr.php ).
    Je suis sous Windows 8. J'aimerais pouvoir utiliser la SFML pour gérer un joystick dans une application Qt (si j'ai bien compris, je pourrais faire comme avec la SDL, sauf que je n'aurais pas la possibilité de gérer le retour de force - qui de toute façon pose des problèmes sur mon joystick - donc en fait, c'est un choix insolite).
    Il s'agit de configurer l'IDE.
    Je prévois donc d'utiliser ce qui est décrit sur cette page : http://www.sfml-dev.org/tutorials/2.1/window-inputs-fr.php. S'il advint quelque évènement singulier, peut-être que je recourrai... aux évènements. Quoiqu'il en soit rien de très intensif à première vue.

    Dois-je suivre ce tutoriel ?
    Dans ce cas, je place le dossier décompressé et renommé SFML à la racine du disque (C:\) ?

    Autre chose à signaler peut-être ?

    Disons que je n'ai pas envie de faire n'importe quoi à la place d'une configuration correcte pour ce que je veux faire... ^^

    Merci d'avance,
    Soaocohoa 

    Au fait, c'est très mal de dire que c'est urgent, non ? :p
    C'est juste que la rentrée est dans 3 jours, je viens bientôt commencer un projet, et je voudrais éviter que cela devienne (trop) urgent ^^

    Merci beaucoup ;)  

    -
    Edité par Soaocohoa 1 septembre 2013 à 12:02:39

    • Partager sur Facebook
    • Partager sur Twitter
      1 septembre 2013 à 12:02:26

      ... Bee-do, bee-do...
      Bee-do bee...

      Bee-do bee-do bee-do bee-do bee-do bee-do bee-do bee-do bee-do bee-do bee-do bee-do.

      :)

      Merci ^^ 

      • Partager sur Facebook
      • Partager sur Twitter
        1 septembre 2013 à 12:16:24

        Tu n'as pas besoin de recompiler la SFML et/ou Qt. Télécharge la version de SFML qui correspond à ton compilateur (GCC 4.7 TDM (SJLJ) - 32 bits pour Qt 5.0.2), link la dans Qt Creator et c'est bon !

        Clic droit sur ton projet > Ajouter une bibliothèque... Ça devrait te générer quelque chose comme ça dans ton .pro :

        win32:CONFIG(release, debug|release): LIBS += -LC:/SFML-2.1-mingw/lib/ -lsfml-graphics- -lsfml-main- -lsfml-system- -lsfml-window-
        else:win32:CONFIG(debug, debug|release): LIBS += -LC:/SFML-2.1-mingw/lib/ -lsfml-graphics-d -lsfml-main-d -lsfml-system-d -lsfml-window-d
        
        INCLUDEPATH += C:/SFML-2.1-mingw/include
        DEPENDPATH += C:/SFML-2.1-mingw/include


        Bien sûr tu peux ajouter/supprimer les modules qui t'intéressent/ne t'intéressent pas :).

        • Partager sur Facebook
        • Partager sur Twitter
          1 septembre 2013 à 14:22:49

          Je vais voir cela, merci ! :)

          Par contre, j'ai téléchargé "GCC 4.7 MinGW (DW2) - 32 bits"... Ce n'est pas celle-là que j'aurais du télécharger ?
          J'ai Windows 8 en 64 bits, puis pour Qt : "MinGW 4.8, OpenGL, 666 MB".

          Merci de ton aide :)

          • Partager sur Facebook
          • Partager sur Twitter
            1 septembre 2013 à 14:30:30

            Lorsque je clique sur ajouter une bibliothèque, je sélectionne bibliothèque externe, puis "Suivant".
            Ensuite j'ai cette fenêtre :

            Que dois-je mettre pour "fichier de bibliothèque" ?

            Pour chemin d'inclusion, je sélectionne le dossier "include" ?

            Je laisse ensuite les autres options par défaut ?

            Merci :)

            -
            Edité par Soaocohoa 1 septembre 2013 à 14:31:49

            • Partager sur Facebook
            • Partager sur Twitter
              1 septembre 2013 à 15:42:07

              En effet tu n'as pas pris la bonne version de SFML (du moins si le compilateur de Qt n'a pas changé entre la 5.0.2 et la 5.1).

              Il faut que tu prennes la version que j'ai mentionnée dans mon post précédent. La version que tu as prise ne fonctionne pas pour le module Network (tu auras une erreur à l'exécution du programme)... ne me demande pas pourquoi tous les autres modules fonctionnent, je n'en sais rien :p. J'avais posté sur le forum officiel de la SFML un message à ce sujet.

              • "Fichier de bibliothèque" c'est tes .a (tu ne peux en sélectionner qu'un seul à la fois, donc il faudra recommencer l'opération pour chaque .a).
              • "Chemin d'inclusion" est effectivement le dossier include de la SFML
              • Puisque tu programmes sous Windows, tu peux décocher les cases "Linux" et "Mac;)
              • Partager sur Facebook
              • Partager sur Twitter
                1 septembre 2013 à 15:59:13

                Ok, merci ^^
                J'essaierai prochainement :)
                • Partager sur Facebook
                • Partager sur Twitter
                  21 octobre 2013 à 14:30:06

                  Lu :)

                  ... Euh... en fait j'étais en train d'essayer, mais il se trouve que pour "Fichier de bibliothèque"... on ne peut sélectionner que des *.lib... Donc dans mon cas... rien... et certainement pas les .a  -_-


                  Que dois-je faire ?

                  Merci d'avance :)
                  Soaocohoa 

                  • Partager sur Facebook
                  • Partager sur Twitter
                    21 octobre 2013 à 20:18:27

                    Si tu utilises la version MinGW de Qt, il te faut bien des *.a. Cependant, effectivement, Qt Creator ne propose que *.lib dans son filtre.

                    Donc soit tu écris toi-même le code pour ajouter les *.a dans ton fichier de projet, soit tu renommes tes *.a en *.lib et une fois que tu les as ajoutés tu les renommes de nouveau ;).

                    Normalement tu devrais avoir quelque chose du style :

                    win32:CONFIG(release, debug|release): LIBS += -LC:/SFML-2.1-mingw-tdm/lib/ -lsfml-main- -lsfml-system- -lsfml-network
                    else:win32:CONFIG(debug, debug|release): LIBS += -LC:/SFML-2.1-mingw-tdm/lib/ -lsfml-main-d -lsfml-system-d -lsfml-network-d
                    
                    INCLUDEPATH += C:/SFML-2.1-mingw-tdm/include
                    DEPENDPATH += C:/SFML-2.1-mingw-tdm/include



                    -
                    Edité par GuiTeK 21 octobre 2013 à 20:18:58

                    • Partager sur Facebook
                    • Partager sur Twitter
                      21 octobre 2013 à 20:21:37

                      Oh ! Insolite !
                      Merci :)

                      Mais si je renomme de nouveau les fichiers après les avoir ajouté, cela ne va poser de problème ?

                      (je pose la question mais je vais essayer ^^ )
                      • Partager sur Facebook
                      • Partager sur Twitter
                        21 octobre 2013 à 20:27:34

                        Non ça ne posera pas problème, au contraire, ça va fonctionner :).
                        • Partager sur Facebook
                        • Partager sur Twitter
                          21 octobre 2013 à 21:06:58

                          ^^

                          C'est ce que j'ai fait.
                          J'ai répété l'opération pour chaque fichier dont le nom contenait "window" seulement...
                          Je ne sais pas si c'est judicieux, mais j'ai fait cela  parce que dans include/SFML/Window il y a un .h nommé Joystick...
                          Pas d'erreur si je compile, il faudrait que je fasse un petit test en essayant d'utiliser des fonctions de la SFML.

                          Je fais cela et je poste un nouveau message.
                          Merci beaucoup :)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            21 octobre 2013 à 21:19:12

                            Je continue d'essayer ce que je peux... mais je n'ai pas grand chose qui fonctionne pour l'instant :'(

                            -
                            Edité par Soaocohoa 21 octobre 2013 à 21:19:27

                            • Partager sur Facebook
                            • Partager sur Twitter
                              21 octobre 2013 à 21:22:45

                              Non... cela ne fonctionne pas : le programme plante au démarrage :(
                              • Partager sur Facebook
                              • Partager sur Twitter
                                23 octobre 2013 à 11:03:06

                                Soaocohoa a écrit:

                                ^^

                                C'est ce que j'ai fait.
                                J'ai répété l'opération pour chaque fichier dont le nom contenait "window" seulement...
                                Je ne sais pas si c'est judicieux, mais j'ai fait cela  parce que dans include/SFML/Window il y a un .h nommé Joystick...
                                Pas d'erreur si je compile, il faudrait que je fasse un petit test en essayant d'utiliser des fonctions de la SFML.

                                Je fais cela et je poste un nouveau message.
                                Merci beaucoup :)


                                Il faut aussi ajouter les autres fichiers ! Tu as besoin au minimum de :

                                • sfml-main.a
                                • sfml-system.a

                                Ensuite tu choisis parmi cette liste les modules que tu souhaites utiliser (audio, graphique, réseau, fenêtre).

                                Je pense que tu as remarqué qu'il y a plusieurs fois le "même" fichier avec seulement 1 ou 2 caractères qui diffèrent à chaque fois ; c'est parce qu'il y a plusieurs manières de linker une librairie : tu peux la linker soit de manière statique (librairie incluse dans l'exécutable, présence d'un "-s" à la fin du nom du fichier) ou de manière dynamique (librairie non-incluse dans l'exécutable, celui-ci aura besoin des fichiers *.dll qui se trouvent dans le dossier bin/ de SFML pour fonctionner).

                                Je te conseille de prendre la méthode de linkage dynamique, ton .exe sera beaucoup moins gros donc plus rapide à renvoyer lorsque tu feras des modifications dessus par exemple. N'oublie pas les *.dll si tu choisis cette méthode !

                                Enfin, pour chacune de ces 2 manières de linker la librairie, il existe une version debug (présence d'un "-d" à la fin du nom du fichier) et release. Là, tu choisis la version debug si tu compiles en mode debug, ou la version release si tu compiles en mode release.

                                En tout tu as donc 4 *.a pour chaque module de la SFML, tu dois bien sûr en choisir 1 seul à chaque fois.

                                -
                                Edité par GuiTeK 23 octobre 2013 à 11:04:49

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  23 octobre 2013 à 11:36:01

                                  Merci :)

                                  Je commençais en effet à avoir quelques soupçons pour main... mais je n'en étais pas tout à fait là ! Merci :)
                                  Et là case cochée "retirer le suffixe -d pour la version release" fait qu'automatiquement, en release, il va chercher le fichier qui n'a pas le -d, non ?
                                  Ah... dans le code généré, il enlève le "d" vraisemblablement pour la version release, mais pas le "-" ! Je peux le supprimer manuellement non ?  

                                  En tout cas, je n'ai modifie que les lignes écrites à l'identique pour avoir quelque chose qui ressemblait à ce que tu m'as écrit : 

                                  win32:CONFIG(release,debug|release):LIBS+=-L$$PWD/../../../../SFML/SFML-2.1-windows-gcc-4.7-tdm-32bits/SFML-2.1/lib/-llibsfml-main--llibsfml-system--llibsfml-window-
                                  else:win32:CONFIG(debug,debug|release):LIBS+=-L$$PWD/../../../../SFML/SFML-2.1-windows-gcc-4.7-tdm-32bits/SFML-2.1/lib/-llibsfml-main-d-llibsfml-system-d-llibsfml-window-d
                                  INCLUDEPATH+=$$PWD/../../../../SFML/SFML-2.1-windows-gcc-4.7-tdm-32bits/SFML-2.1/include
                                  DEPENDPATH+=$$PWD/../../../../SFML/SFML-2.1-windows-gcc-4.7-tdm-32bits/SFML-2.1/include

                                  Si je renomme les fichiers, il semble qu'il ne les trouve plus vraiment...
                                  Mais si j'ose écrire une seule ligne faisant appel à la SFML, par exemple  "(sf::Keyboard::isKeyPressed(sf::Keyboard::Left)"
                                  ... alors, dès que la compilation a terminé, j'ai :  "Le programme s'est terminé subitement."

                                  :'(

                                   EDIT : Les espaces ne sont pas apparus entre les différents noms cités dans le .pro, mais ils sont présents dans mon fichier.

                                  -
                                  Edité par Soaocohoa 23 octobre 2013 à 11:37:16

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    23 octobre 2013 à 13:46:10

                                    Je pense que le plus simple c'est de prendre exemple sur moi :

                                    win32:CONFIG(release, debug|release): LIBS += -LC:/SFML-2.1-mingw/lib/ -lsfml-graphics- -lsfml-main- -lsfml-system- -lsfml-window-
                                    else:win32:CONFIG(debug, debug|release): LIBS += -LC:/SFML-2.1-mingw/lib/ -lsfml-graphics-d -lsfml-main-d -lsfml-system-d -lsfml-window-d
                                    
                                    INCLUDEPATH += C:/SFML-2.1-mingw/include
                                    DEPENDPATH += C:/SFML-2.1-mingw/include


                                    Tu remplaces -LC:/SFML-2.1-mingw/lib/ par -LCHEMIN_ABSOLU_DU_DOSSIER_LIB_SFML (laisse bien le -L devant). Ensuite tu adaptes -lsfml-main- -lsfml-system- -lsfml-window- selon tes besoins.

                                    Tu fais pareil pour la ligne debug (en gros tu rajoutes seulement des "d").

                                    Enfin pour les lignes INCLUDEPATH et DEPENDPATH tu indiques le chemin absolu du répertoire "include" de SFML.

                                    Voilà, ça devrait fonctionner ;).

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      23 octobre 2013 à 16:42:02

                                      J'essaie cela tout de suite.
                                      Mais il ne faudrait pas enlever "-d" plutôt que "d" seulement ?
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        23 octobre 2013 à 20:24:41

                                        Soaocohoa a écrit:

                                        Fait.
                                        Et le problème persiste.

                                        Voici quelques captures d'écran :

                                        Dossier SFML dans le dossier include
                                        Dossier lib
                                        .pro et erreurs dans Qt

                                        ...

                                        Dans les 2 lignes CONFIG j'ai un slash après /lib (/lib/). Cependant je ne pense pas que ce soit la cause du problème.

                                        Tu as bien pensé à mettre les DLL à côté de ton exécutable (dans le dossier debug ou release) ?

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          23 octobre 2013 à 21:07:21

                                          Effectivement, le slash n'a pas l'air de changer grand chose... :'(

                                          ... J'ai tout vérifié pour les DLL...

                                          Et le problème est résolu ! :)
                                          Il faut donc deux fichiers DLL dans mon cas en debug : sfml-system-d-2 et sfml-window-d-2 :D

                                          Merci beaucoup !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! :D :D :D  

                                          :magicien: ! 

                                          Et désolé d'être un peu mou... ^^ 

                                          -
                                          Edité par Soaocohoa 23 octobre 2013 à 21:08:04

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            23 octobre 2013 à 21:33:02

                                            De rien, avec plaisir :) !
                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            Configuer Qt Creator pour utiliser SFML

                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                            • Editeur
                                            • Markdown