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

Débats sur le développement - Le Best Of Discussion :

Quelle est votre approche pour le développement multiplateforme en C++ ?


Sujet :

Débats sur le développement - Le Best Of

  1. #1
    Chroniqueur Actualités
    Avatar de Patrick Ruiz
    Homme Profil pro
    Redacteur web
    Inscrit en
    février 2017
    Messages
    833
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Redacteur web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : février 2017
    Messages : 833
    Points : 28 434
    Points
    28 434
    Par défaut Quelle est votre approche pour le développement multiplateforme en C++ ?
    Quelle est votre approche pour le développement multiplateforme en C++ ? Celle d’Electronics Arts s’appuie sur Visual Studio
    Pour développer sous Windows avec Linux comme cible

    En génie logiciel, l’approche de développement cross-plateformes peut s’imposer pour diverses raisons. Dans le cas de l’éditeur de jeux vidéo Electronics Arts (EA), c’est pour permettre à ses équipes habituées à travailler sur des postes de travail tournant sous Windows de ne pas avoir à s’adapter à un autre système d’exploitation – Linux dans ce cas.

    « Chez Electronics Arts, nos développeurs de jeux sont habitués à un environnement Windows. Nous avons donc pensé qu'il serait difficile de les forcer à travailler directement sous Linux », écrit l’éditeur.

    En 2008, Electronics Arts a lancé la première version de son moteur de jeu Frosbite. Ce dernier est conçu pour une utilisation sur les plateformes Windows, PlayStation 3, Xbox 360 ainsi que les consoles PlayStation 4 et la Xbox One. L’éditeur explique que ce dernier fait usage d’ un composant Linux utilisé par des serveurs dédiés sur lesquels s’appuient de nombreux jeux populaires. Dans un billet de blog paru il y a peu, Electronics Arts donne des détails de l’approche que ses équipes adoptent pour les travaux de développement dudit composant de moteur sous Windows avec Linux comme cible.

    Il y a trois ans, l’équipe Visual C++ a annoncé la disponibilité d’une extension qui permet de développer des applications C++ sous Visual Studio, ce, pour le système d’exploitation Linux. Cette dernière s’appuie par défaut sur le système de build multiplateforme CMake.

    « Dans Visual Studio 2017 15.4, vous pouvez maintenant cibler Linux à partir de vos projets CMake. Cela vous permet de travailler sur votre base de code existante qui utilise CMake comme solution de build sans avoir à la convertir en projet VS. Si votre base de code est multiplateforme, vous pouvez cibler Windows et Linux depuis Visual Studio », indiquait alors Microsoft.

    Au sein de Visual Studio, le premier contact avec l’extension se fait au travers de l’installateur au sein duquel on peut retrouver l’option « Linux development with C++. » C’est sur cette extension que l’approche de l’éditeur Electronics Arts est basée.

    Nom : 1.png
Affichages : 12326
Taille : 109,0 Ko

    C’est au niveau de la compilation croisée que des différences avec la méthode que Microsoft propose par défaut se présentent dans le flux de travail mis en place chez Electronics Arts. En effet, l’éditeur s’appuie sur une chaîne de compilation croisée d’un genre assez particulier.

    « On combine les versions LLVM de Windows et Linux sur le poste de travail Windows. Ceci permet d’obtenir tous les bibliothèques et fichiers d’entête requis pour cibler Linux. Nous faisons aussi usage de la chaîne d’outils GCC avec LLVM. Le processus de build des outils GCC pour Windows se fait sur un hôte Linux à l’aide de crosstool-NG », explique Electronics Arts. L’extension « Linux development with C++ » est ensuite mise à contribution pour exécuter la chaîne de compilation croisée custom et générer les différents binaires.

    « Lorsque l'idée d'ajouter Linux à notre liste de plateformes prises en charge a émergé, nous avons décidé de mettre en place notre flux de travail de sorte qu'il puisse être initié par nos développeurs à partir d'un PC sous Windows avec Visual Studio, car c'est l'environnement que nous utilisons pour presque toutes nos autres plateformes. Une autre exigence était que notre système d'intégration continue puisse valider que notre code a été compilé sous Linux sans avoir besoin de configurer des machines virtuelles dédiées à l'intégration continue sur l'hôte Linux ou d'un système Linux distant pour compiler le code, car cela serait beaucoup plus coûteux et compliqué à gérer et à supporter. Ces exigences nous ont fondamentalement amenés à décider de recompiler notre base de code sur Windows directement en utilisant Clang », ajoute EA pour justifier son approche.

    Lors de son lancement en 2016, l’extension « Linux development with C++ » permettait uniquement de déployer des applications sur un hôte distant. Désormais, elle offre aux développeurs qui ne disposent même pas de poste de travail Linux de créer une machine virtuelle sur la plateforme cloud Azure ou pour les possesseurs de systèmes qui tournent sous Windows 10, de faire usage du sous-système Windows pour Linux. Electronics Arts parle des deux dernières possibilités dans sa note d’information en revenant sur les détails des différentes configurations à effectuer.

    Nom : 2.png
Affichages : 1419
Taille : 92,9 Ko

    L’un des inconvénients de la méthode exposée par Electronics Arts est que le déploiement de l’application se fait lors de la phase de build. Un partenariat entre Microsoft et l’éditeur devrait permettre d’introduire trois phases distinctes : build, déploiement, débogage.

    « Cela permettrait de procéder au build du code sans avoir besoin d'une connexion à une machine distante. C'est utile dans les environnements d'intégration continue ou dans ceux où l'on veut simplement effectuer le build et corriger de façon locale les problèmes de compilation pour Linux et les soumettre et laisser les tests automatisés valider leurs corrections. Avoir des phases distinctes de déploiement et de débogage est également très pratique pour pouvoir déployer à partir de Visual Studio, mais aussi déboguer directement à partir de la machine Linux », indique Electronics Arts.

    Sources : Billet de blog Microsoft

    Et vous ?

    Que pensez-vous de l’approche d’ Electronics Arts ?

    Quelle est la vôtre pour développer sous Windows avec Linux comme cible ? Quels avantages offre-t-elle en comparaison à celle d’Electronics Arts ?

    Visual Studio est-il le meilleur environnement de développement intégré pour le développement cross-plateformes en C++ ?

    Voir aussi :

    Une extension Visual Studio permet le débogage d'application C++ sur Linux et supporte des architectures matérielles spécifiques comme ARM

    Le meilleur langage pour le développement cross-platform est-il le C++ ? Embarcadero prévoit une résurgence du C++ dans le mobile

    Boden : un framework C++ multiplateforme pour le développement d'application mobile native Android et iOS
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre averti
    Homme Profil pro
    Urbaniste
    Inscrit en
    juin 2018
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : juin 2018
    Messages : 160
    Points : 422
    Points
    422
    Par défaut
    Que pensez-vous de l’approche d’ Electronics Arts ?
    Je ne parle que pour mon cas, dans mon entourage tout les dev que je connais tournent en *nix sur leur machine personnel, c'est uniquement pour le travail qu'ils utilisent windows... et ça les désolent.
    De plus, comment dev proprement sur un système qu'on ne connait pas... ce qui est un poil paradoxale. Si ils connaissent, ça devrait pas les déranger plus que ça.

    Quelle est la vôtre pour développer sous Windows avec Linux comme cible ? Quels avantages offre-t-elle en comparaison à celle d’Electronics Arts ?
    Complètement absurde de payer des licences pour développer pour un système qu'on peut installer sans aucune licence à payer.

    Perso, depuis que j'ai définitivement abandonné windows je m'en porte que mieux et suis toujours amusé par les utilisateurs qui disent: "- non mais windows est stable maintenant" j'entend ça depuis windows 98.
    Après les bugs de MS-DOS 6 (fallait le faire quand même pour un OS aussi minimaliste) microsoft n'a jamais rien fait de stable dans le temps alors s'en servir comme OS de dev

    Pour finir, je trouve ça un poil suspect de voir une entreprise externe à M$ en vanter les mérites.

    Visual Studio est-il le meilleur environnement de développement intégré pour le développement cross-plateformes en C++ ?
    Je sais pas, j'ai banni tout ce qui est microsoft juste avant l'an 2000. A mes yeux c'est l'exemple même de la médiocrité et de la malhonnêteté.

  3. #3
    Membre éclairé
    Homme Profil pro
    Everything
    Inscrit en
    décembre 2013
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Everything

    Informations forums :
    Inscription : décembre 2013
    Messages : 230
    Points : 782
    Points
    782
    Par défaut
    Je dois avouer que lorsque j'ai décidé de passer exclusivement sous *nix pour mes développements personnel , 80% de mon stress a disparut. Heureusement qu'au boulot je suis obligé de travailler avec du Win*; ça me fait des piqûres de rappel sur le bienfait de ma décision.
    Ceux qui abandonnent une liberté essentielle pour une sécurité minime et temporaire ne méritent ni la liberté ni la sécurité.
    Benjamin Franklin

  4. #4
    tlt
    tlt est déconnecté
    Membre actif Avatar de tlt
    Homme Profil pro
    Chef de projet IT/Telecom, Architecte de système d'information
    Inscrit en
    juillet 2004
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chef de projet IT/Telecom, Architecte de système d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : juillet 2004
    Messages : 151
    Points : 277
    Points
    277
    Par défaut
    Perso, j'aurai adopté le même workflow qu'eux aussi pour une seule et unique raison: je trouve qu'il est nettement plus facile et convivial de déboguer des programmes Windows sous Windows avec visual studio que des programmes linux sous linux avec un autre IDE.
    Concernant particulièrement les build pour plateforme PC, il ciblent surement plus les joueurs Windows que Linux et donc priorisent les build pour Windows.Du coup ce serait plus agréable de faire un build, test et debogage de jeu Windows sous Windows car il n'y a pas trop de remue-ménages à faire.
    Je suis quand même curieux de savoir comment ils font pour le débogage Windows/Linux et quel outils/utilitaires ils utilisent.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    developer c++
    Inscrit en
    juin 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : developer c++
    Secteur : Finance

    Informations forums :
    Inscription : juin 2017
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par tlt Voir le message
    Je suis quand même curieux de savoir comment ils font pour le débogage Windows/Linux et quel outils/utilitaires ils utilisent.
    Le debugger de visual studio supporte le protocole qu'utilisent gdb/lldb (cf. https://devblogs.microsoft.com/cppbl...gger-extension). Ca marche plutot pas mal, meme s'il faut faire un peu de parametrage (flags preprocesseur, path substitution). Quelques fonctionalites sont encore manquantes (data break points, reverse debugging, ...). Il y a aussi un outil pour synchroniser les sources avec la machine cible ce qui permet de debugger la stl ou les appels systeme plutot proprement.

  6. #6
    Membre averti
    Homme Profil pro
    Technicien de maintenance / Developpeur PHP
    Inscrit en
    mai 2015
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien de maintenance / Developpeur PHP
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : mai 2015
    Messages : 137
    Points : 372
    Points
    372
    Par défaut
    Que pensez-vous de l’approche d’ Electronics Arts ?
    De ce que je comprend, ils utilisent les outils mis à leurs disposition par MS dans Visual Studio pour cibler Windows & les parties serveur sous Linux, en utilisant comme builder CMake au lieu de MSBuild et comme cross-compilers LLVM/GCC (selon cette methode).

    Si c'est ça, j'en pense qu'il n'ont pas vraiment de choix là dedans .
    L' "host" est imposé, la machine de "build" est imposé et la "target" l'est aussi.
    Sachant que MS ne fournit que des plugin à VisualStudio pouvant utiliser des outils tiers (CMake, LLVM/Clang, GCC) qui eux par contre permette de compiler pour une cible différente.

    Quelle est la vôtre pour développer sous Windows avec Linux comme cible ?
    Jamais Monsieur, j'ai des principes, moi !

    Quels avantages offre-t-elle en comparaison à celle d’Electronics Arts ?
    Je peut continuer à me regarder dans la glace tous les matins.

    Visual Studio est-il le meilleur environnement de développement intégré pour le développement cross-plateformes en C++ ?
    C'est toujours la même chose avec MS, c'est pas comme si on avait le choix.
    Leurs outils, ne cible que Windows et/ou .NetCore.
    Si vous voulez cibler une autre plateforme, c'est à vous ou un tiers de faire les efforts.

    Pour finir, je trouve ça un poil suspect de voir une entreprise externe à M$ en vanter les mérites.
    Stérilux
    Mais EA ne le fait pas :

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : novembre 2005
    Messages : 334
    Points : 490
    Points
    490
    Par défaut
    Visual Studio est-il le meilleur environnement de développement intégré pour le développement cross-plateformes en C++ ?

    Etant passé sous peu à Code , je dois avouer que cette IDE est impeccable , j ' ai connus aussi bien CodeLite , que KDEvelopp , VCE fait le job et très bien ;je pensais l ' époque du dogmatisme derrière nous , comme une certaine limitation d ' esprit , je me trompais

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur C++
    Inscrit en
    octobre 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur C++

    Informations forums :
    Inscription : octobre 2008
    Messages : 198
    Points : 570
    Points
    570
    Par défaut
    Bof.

    De toute façon Linux n'est pas fait pour les applications propriétaires et le partage des bibliothèques rend compliqué ces derniers. Les rares paquets propriétaires natifs embarquent leur propres versions des bibliothèques et utilisent des scripts de démarrage à grand coup de LD_LIBRARY_PATH et LD_PRELOAD. Et en général c'est un bordel monstre. Je me souviens encore quand j'ai voulu essayer par curiosité juste une fois la version native de Guitar Pro 6. De toute façon les vrais puristes Linux n'utilisent pas d'applications privatrices.

    De plus, pour ma part la cross-compilation est une plaie. Il est difficile de faire des tests unitaires, de mélanger compilateur hôte / cible selon les outils de construction, ni CMake ni VS le permettent. Ainsi si on veut utiliser un outil natif pendant la compilation de son propre projet, on est assez souvent dans l'impasse. Finalement, gérer les répertoires d'includes/bibliothèques par cible est une plaie supplémentaire.

    En bref, je pense que le développement pour chaque plateforme doit se faire sur celle-ci avec ces outils de référence sauf cas de force majeur (exemple : Android/iOS).

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    novembre 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2008
    Messages : 38
    Points : 25
    Points
    25
    Par défaut
    Pour moi, c'est dans l'autre sens de Linux vers Windows et j'utilise MXE : https://mxe.cc/#introduction
    Finalement c'est assez simple.
    Il faut juste un peu de temps pour compiler toutes les librairies que l'ont désire

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : novembre 2005
    Messages : 334
    Points : 490
    Points
    490
    Par défaut
    Citation Envoyé par Markand Voir le message
    Bof.

    De toute façon Linux n'est pas fait pour les applications propriétaires et le partage des bibliothèques rend compliqué ces derniers. Les rares paquets propriétaires natifs embarquent leur propres versions des bibliothèques et utilisent des scripts de démarrage à grand coup de LD_LIBRARY_PATH et LD_PRELOAD. Et en général c'est un bordel monstre. Je me souviens encore quand j'ai voulu essayer par curiosité juste une fois la version native de Guitar Pro 6. De toute façon les vrais puristes Linux n'utilisent pas d'applications privatrices.

    .
    Ce débat est derrière nous , il n ' y a pas de vrai ou faux puristes linuxien, c 'est un état d ' esprit clanique et ridicule qui commence à vieillir . Linux c 'est imposé dans l ' IT point , pour le grand public , c 'est aussi un non sujet , oui le cross plateforme est un bordel , mais cela peu s ' arranger aussi .

  11. #11
    Membre expérimenté Avatar de onilink_
    Profil pro
    Inscrit en
    juillet 2010
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 28
    Localisation : France

    Informations forums :
    Inscription : juillet 2010
    Messages : 380
    Points : 1 455
    Points
    1 455
    Par défaut
    Dans mon cas, pour mon jeu je fais plutôt l'inverse:
    - tout le dev et debug sous Linux, avec Qt Creator et GCC/GDB
    - j'utilise un MinGW + CMake + Wine pour l'export windows (et pas visual studio), et non pas de la cross compilation
    - je fais les tests windows directement depuis mon linux avec wine

    La partie difficile était d'utiliser la steam_api sous MinGW, étant donné qu'il n'y a qu'un build prévu pour VS.
    J'ai du créer un wrapper dans une DLL avec une interface "en C".
    Sous Linux et Mac pas de soucis pour la steam_api, les binaires des libs fournies fonctionnent nickel sous GCC et Clang.

    Pour mac par contre obligé d'avoir un mac "physique" pour le build, je n'ai pas réussi a faire de hackintosh.
    Heureusement j'ai trouvé un mac mini pas cher d'occasion, qui fait le taf.
    Des tutos de pixel art: https://twitter.com/OniMille

Discussions similaires

  1. Réponses: 11
    Dernier message: 14/11/2016, 16h56
  2. Mobile : HTML5 est-il un échec pour le développement cross-platform ?
    Par Hinault Romaric dans le forum Actualités
    Réponses: 27
    Dernier message: 03/02/2014, 11h50
  3. Quelle est votre police de caractères préférée pour développer ?
    Par Gordon Fowler dans le forum Actualités
    Réponses: 107
    Dernier message: 02/10/2013, 09h43
  4. Réponses: 99
    Dernier message: 18/12/2012, 11h50

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