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

Uncategorized

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

Source

Sharing is caring!

Leave a Reply