Mokona Guu Center

Test de Clion avec Unreal, partie 1

Publié le

Hier, je démarrais un test pour trouver un IDE C++ pour Linux en 2015. Maintenant que toutes les dépendances d'Unreal sont chargées, je peux me lancer. Le premier IDE testé sera Clion.

Clion est un IDE pour C++ de Jetbrains, qui nous habitue à des produits de bonnes factures. L'IDE est actuellement en Early Access, donc pas vraiment considéré ni complet, ni stable. Cependant, il est déjà assez intéressant.

Clion, comme d'autres (QtCreator par exemple) se repose sur CMake pour la gestion des projets. Unreal génère sa configuration de projet avec CMake. Parfait ! Je lance donc Clion et lui demande d'ouvrir le CMakefile qu'Unreal a généré dans le répertoire racine (il faut à peu près 25 secondes pour générer le tout, ce qui n'est pas anodin, mais supportable).

À ce propos, j'ai trouvé les README d'Unreal très bien écrit, donnant la bonne information, avec des scripts faciles à utiliser qui s'occupent de tout. Ces scripts ajoutent même des hooks à Git afin de garder les dépendances à jour automatiquement lors d'un pull.

Après un premier échec de chargement totalement du à ma configuration de disque un peu particulière, j'arrange les choses et me voici avec un projet chargé.

Fichiers du projet

La configuration particulière venait du fait que, devant la taille grandissante du répertoire Unreal, j'ai déplacé le projet du disque principal (un SSD pas bien gros) à un disque annexe (un HDD avec plein de place) mais monté dans un répertoire avec un espace... A priori, c'est CMake qui n'a pas apprécié. J'ai changé le point de montage et relancé, et le projet s'est chargé.

Le premier chargement est un peu long, disons deux minutes à vue de nez. Une fois chargé, relancer Clion charge le projet immédiatement, il est possible de commencer à travailler. Cependant, en tâche de fond, une nouvelle analyse des CMakefiles et un reparsing des symboles est effectué. Parser les symboles est assez rapide, quelques secondes. Relire les CMakefiles dure à nouveau dans les deux minutes. Cependant, Clion n'est pas gêné par cette opération, il peut s'opérer normalement, sans freeze.

Fenêtre d'analyse du projet

C'est donc parti pour le build... Les différentes configurations sont bien comprises par Clion (il y en a un paquet), et je sélection UEE4ditor.

Les différentes configurations

Ce que je remarque, c'est que quand ça build, ça build, Clion ne semble pas interférer. Les 4 cores tournent à fond.

Fenêtre de statistiques système, CPU

Niveau mémoire, mieux vaut prévoir large. Le README de la partie Linux d'Unreal indique qu'il faut prévoir 1 Go par cœur. On n'en est pas loin. Clion en lui même occupe 1,4 Go (lorsqu'il ne compile pas, il tourne plutôt à un peu plus de 1 Go).

Fenêtre de statistiques de consommation mémoire

Je suis donc parti faire un tour, en me disant que la compilation répartie avait de bon. Puis je suis revenu.

Compilation terminée

Malheureusement, c'est une compilation échouée qui m'attend. C'est étrange car je me trouve sur la branch release. J'essaie deux ou trois autres targets, qui se compilent bien, mais l'éditeur lui, ne veut pas. L'erreur à l'air assez simple mais je n'ai pas pour but aujourd'hui de me plonger là dedans. De puis, la branch release commence à dater en terme de commits visibles sur le dépôt.

Je switch donc sur la branche master et... c'est parti pour 900 Mo de dépendances à charger. Ouch. Le répertoire fait à présent 18 Go. Je me retrouve en terre connu des moteurs/éditeurs de jeu.

Le temps passe, et je retenterai la compilation plus tard

EDIT : en regardant l'erreur de plus près, j'ai compris que j'avais modifié par erreur un fichier en me baladant dans les sources. Un petit reset sur le fichier et la compilation se passe bien mieux.

EDIT 2 : je peux utiliser ma machine assez tranquillement et taper ce message alors que les 4 cores sont à fond... Petit clin d’œil sur la gestion multithread au niveau des systèmes d'exploitation.

Quoi d'autre

Le but étant de tester l'IDE plutôt qu'Unreal, j'ai pu aussi utiliser la recherche de symboles, qui marche bien et est réactive. J'ai pu retrouver mon vieil ami UObject en un instant.

Navigation dans les symboles

Par contre, l'analyse statique de Clion est complètement perdue. Comme beaucoup de ces acolytes moteurs de jeu, Unreal déforme la syntaxe du C++ en la truffant de macros que seul une expansion complète peut analyser. A priori, Clion ne fait pas ça.

Je ne lui en tiens pas trop rigueur. J'irai faire un tour dans les options voir s'il est possible de l'aider.

Analyse statique, c'est très rouge

Voilà pour aujourd'hui. Le début d'utilisation de Clion est prometteur. En tout cas, il à l'air d'encaisser la charge du chargement et du build. Reste à savoir s'il peut encaisser un travail plus long et du debug. Pour cela, il faut d'abord que j'arrive à compiler Unreal.

Suite au prochaine épisode.