Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: SFML - Projet cross-platform  (Lu 2335 fois)

0 Membres et 1 Invité sur ce sujet

Bany

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
    • E-mail
SFML - Projet cross-platform
« le: Octobre 03, 2014, 03:31:19 pm »
Bonjour,
Je vais me lancer dans un projet cross-platform en utilisant SFML et Box2D. Il sera développé sur windows, linux et mac. Le problème est que je ne sais pas du tout comment organiser mon projet, comment partager les sources pour que tous le monde puisse s'y retrouver ? certains vont développer avec VS 2012, d'autre avec vim. Et ensuite comment organiser le code pour bien gérer les différentes plateformes ?
Voila les quelques questions que je me pose, toute aide ou lien parlant de ce sujet m'intéresse :)
J'ai déjà fais quelques recherches mais je n'ai rien trouvé de très convaincant.

Merci pour votre attention !

Glân de Brylan

  • Jr. Member
  • **
  • Messages: 83
  • Je pense ce que je dis et le dis comme je le pense
    • Voir le profil
Re : SFML - Projet cross-platform
« Réponse #1 le: Octobre 03, 2014, 04:01:58 pm »
Tu peux être plus précis ? Je veux dire, je suis pas expert dans le sujet, mais la SFML étant multi-plateforme et Box2D est OS-indépendante, qu'est-ce qui pourrait faire que ton code ne serait pas tout autant multi-plateforme ?
C'est pour faire un jeu, une GUI ? Explique-toi, on ne vas pas te manger :P
Vous aussi, ayez chaque jour une pensée pour tous ces gamins qui s'imaginent faire un MMORPG touts seuls, et ce avant même d'avoir appris le C++.

Bany

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
    • E-mail
Re : SFML - Projet cross-platform
« Réponse #2 le: Octobre 03, 2014, 04:12:36 pm »
Donc c'est pour faire un jeu, et bien c'est juste que je ne sais pas trop comment m'y prendre.
Par exemple si j'ai besoin d'ouvrir un fichier, les fonctions ne sont pas les mêmes sous windows et sous linux, comment je gère cette différence au niveau du code ?

Ensuite, si je code sous visual studio, et mon amis sous vim avec un makefile pour compiler, comment faire pour que mon projet soit à jour si quelqu'un rajoute un fichier ? ou si quelqu'un en modifie un autre ? je sais utiliser git pour des projets compilés sous vim, sans environnement de développement avec des fichiers de projets et autres, mais pour le projet visual studio il faudra que je rajoute à chaque fois les nouveaux fichiers moi même dans le projet ?

Il me semble que cmake aide à gérer ce genre de situation, mais je ne sais pas du tout l'utiliser :/
J'espère avoir été plus clair :)

Glân de Brylan

  • Jr. Member
  • **
  • Messages: 83
  • Je pense ce que je dis et le dis comme je le pense
    • Voir le profil
Re : SFML - Projet cross-platform
« Réponse #3 le: Octobre 03, 2014, 04:33:29 pm »
C'est effectivement beaucoup plus clair, je pense que ceux qui s'y connaissent pourront donner de vraies réponses maintenant. Parce que du je me rend compte que je ne suis pas du tout apte à t'aider :P
Je peux juste dire que choisir les fonctions à utiliser en fonction de l'OS tu peux faire ça :
#define WINDOWS

#ifdef WINDOWS
    /* Code source pour Windows */
#endif

#ifdef LINUX
    /* Code source pour Linux */
#endif

#ifdef MAC
    /* Code source pour Mac */
#endif
Sachant qu'il faut recompiler le programme pour chaque OS, il y a juste à modifier le #define du début pour avoir le bon code.
Alors le mieux serait de détecter l'OS durant l'exécution plutôt que d'utiliser le préprocesseur...je sais qu'il y a des classes pour ça dans Qt mais dans la SFML je ne crois pas.
Sinon tu ne peux pas tout simplement utiliser std::iostream  pour tes ouvertures de fichiers ?

Après pour ces histoires d'IDE, perso j'utilise Code::Blocks et j'ai rien d'autre que des .h et des .cpp, alors je sais pas.
Vous aussi, ayez chaque jour une pensée pour tous ces gamins qui s'imaginent faire un MMORPG touts seuls, et ce avant même d'avoir appris le C++.

Bany

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
    • E-mail
Re : SFML - Projet cross-platform
« Réponse #4 le: Octobre 03, 2014, 04:51:07 pm »
J'ai pris l'exemple de fichier au hasard, il y aura peut-être d'autres choses.
Je pensais aussi utiliser les defines, mais j'ai l'impression que ca va vite être le bordel dans le code :/
Si quelqu'un d'autre a son avis à donner je suis preneur :)

Merci pour tes réponses en tout cas !

Glân de Brylan

  • Jr. Member
  • **
  • Messages: 83
  • Je pense ce que je dis et le dis comme je le pense
    • Voir le profil
Re : SFML - Projet cross-platform
« Réponse #5 le: Octobre 03, 2014, 05:07:12 pm »
J'ai cherché un peu, a priori il n'y a aucune fonction pour détecter l'OS dans la SL ni dans la STL...et encore moins dans la SFML.
Arf tu vas quand même pas utiliser Qt, ce serait emporter tout le tiroir quand t'as besoin d'une fourchette...
Bon. Je ne peux t'aider davantage. Bonne chance !
Vous aussi, ayez chaque jour une pensée pour tous ces gamins qui s'imaginent faire un MMORPG touts seuls, et ce avant même d'avoir appris le C++.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : SFML - Projet cross-platform
« Réponse #6 le: Octobre 03, 2014, 05:59:07 pm »
Pour les choses que tu ne veux pas coder toi-même, il suffit de trouver des bibliothèques portables sur les OS que tu cibles. Ca se trouve en général assez bien.

Pour la gestion du projet, utilise un meta-système de build qui permet à chacun de générer les projets/makefiles pour son environnement préféré. Par exemple, SFML utilise CMake. Renseigne toi un peu sur le sujet, ça vaut le coup. Note que si CMake n'est pas à ton goût (il est loin d'être parfait) il en existe d'autres similaires.

Ensuite je voulais parler de git pour le versionnage des sources, mais apparemment je vois que ce n'est pas un problème ;)
Laurent Gomila - SFML developer

Bany

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
    • E-mail
Re : SFML - Projet cross-platform
« Réponse #7 le: Octobre 06, 2014, 09:44:41 am »
Bonjour, merci pour vos réponse, je vais voir du coté de CMake !

 

anything