Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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

Le , par Patrick Ruiz

0PARTAGES

13  0 
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.


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.


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

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de tlt
Membre actif https://www.developpez.com
Le 11/11/2019 à 14:41
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.
4  0 
Avatar de Jiji66
Membre éclairé https://www.developpez.com
Le 11/11/2019 à 11:00
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.
7  6 
Avatar de darklinux
Membre confirmé https://www.developpez.com
Le 12/11/2019 à 0:52
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
1  0 
Avatar de Markand
Membre confirmé https://www.developpez.com
Le 12/11/2019 à 8:31
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).
1  0 
Avatar de cueffic
Nouveau membre du Club https://www.developpez.com
Le 12/11/2019 à 19:52
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
1  0 
Avatar de darklinux
Membre confirmé https://www.developpez.com
Le 13/11/2019 à 1:03
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 .
1  0 
Avatar de onilink_
Membre expérimenté https://www.developpez.com
Le 15/11/2019 à 17:27
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.
1  0 
Avatar de ajax67sr
Nouveau Candidat au Club https://www.developpez.com
Le 11/11/2019 à 16:36
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.
0  0 
Avatar de defZero
Membre averti https://www.developpez.com
Le 11/11/2019 à 21:12
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 :
1  1 
Avatar de Stérilux
Membre confirmé https://www.developpez.com
Le 11/11/2019 à 9:40
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é.
4  8