L’éditeur propose déjà une EAP de la prochaine mise à jour de son EDI, CLion 2020.2 EAP2. Celle-ci s’accompagne de la très attendue prise en charge des projets Makefile. Bien que cette prise en charge n’en soit encore qu’à ses débuts, avec diverses limitations et problèmes connus, JetBrains assure qu’elle permet déjà de gérer une longue liste de projets.
L’approche de JetBrains pour l’implémentation
En début d’année, JetBrains a partagé ses conclusions et décrit l’approche qu’il a décidé d’adopter pour la prise en charge des projets Makefile dans CLion. À cette occasion, il a présenté les approches choisies par divers EDI et éditeurs C++ modernes pour gérer le Makefile :
- Les wrappers du compilateur sont utilisés pour encapsuler les appels réels du compilateur, puis une build full clean est effectuée et les informations du projet sont extraites.
- La variable d’environnement LD_PRELOAD est utilisée et une bibliothèque dynamique spécifique est chargée avant l’exécution de tout processus de build pour intercepter les appels du compilateur et collecter les informations du projet.
- La sortie de la commande make est analysée, souvent utilisée avec l’option --just-print pour éviter une build réelle.
JetBrains a noté que la troisième option offre plusieurs avantages majeurs :
- Elle n’affecte pas le processus de build.
- Elle permet de collecter les informations plus rapidement par rapport à la build complète du projet.
- Elle fonctionnerait en tant qu’option « portable », car l’EDI peut théoriquement commencer avec la sortie Make enregistrée sur une autre machine.
Aussi, il a décidé d’adopter la troisième approche et a implémenté un prototype. Il l’a testé sur une longue liste de projets et a fourni un tableau pour indiquer ceux qui marchent, les problèmes connus et apporter différents commentaires. Par exemple, l’approche fonctionne avec le projet Nano, mais JetBrains note que « config.h ainsi que certains autres en-têtes disparaissent parfois de la vue Project Source Files ».
Comment démarrer avec votre projet Makefile dans CLion
Pour ouvrir un projet Makefile dans CLion :
- Sélectionnez le projet dans File | Open.
- Vous pouvez ouvrir un dossier en tant que projet et CLion recherchera les fichiers Makefile de niveau supérieur (ainsi que les fichiers CMakeList.txt ou compile_commands.json) et suggérera de l’ouvrir en tant que projet. Vous pouvez aussi pointer directement CLion vers un Makefile dans la boîte de dialogue Open.
- CLion vous demandera peut-être de nettoyer le projet. Cette étape est nécessaire, car la build Make est incrémentielle et si elle s’exécute sur un projet non nettoyé, le rechargement du projet ne fonctionne pas correctement et ne prend pas en compte les fichiers inchangés, donc seuls les fichiers mis à jour sont compilés.
- CLion va maintenant essayer de charger le projet.
- Dès que le projet est correctement chargé, vous pouvez commencer à travailler dessus dans CLion et bénéficier ainsi de toutes les fonctionnalités intelligentes de l’IDE.
Vous pouvez jouer sur certains paramètres clés si les réglages par défaut ne vous conviennent pas. Cliquez sur Settings/Preferences | Build, Execution, Deployment | Makefile settings :
Ici, vous pouvez changer les éléments suivants :
- La Chaîne d’outils utilisée pour charger le projet Makefile. Toutes les chaînes d’outils locales (Clang, GCC, MinGW, Cygwin, WSL) sont prises en charge. La chaîne d’outils Visual Studio s’appuie sur NMake, qui n’est actuellement pas pris en charge, mais si vous parvenez à générer votre projet à l’aide de GNU Make, il fonctionnera dans CLion. Le mode à distance n’est pas encore inclus.
- Les Arguments utilisés pour appeler la commande make dans CLion afin d’extraire les informations du projet.
- Les cibles Build et Clean utilisées avec la commande make dans CLion pour extraire les informations du projet. Pour Build, un champ vide signifie que CLion prend la première cible spécifiée dans le Makefile du projet.
Problèmes et limitations connus
La partie la plus fragile de l’algorithme utilisé est l’extraction des commandes de compilation de la sortie de la commande make. JetBrains a constaté des problèmes dans certains cas
- Le projet supprime l’impression des répertoires. Et donc l’algorithme ne parvient pas à détecter correctement les fichiers source en cours de génération.
- Le compilateur est inconnu ou les indicateurs de compilation ne peuvent pas être extraits correctement. Plusieurs wrappers comme libtool aggravent les choses en masquant les indicateurs de compilation et en interférant avec la sortie du Make.
L’éditeur a intégré plusieurs heuristiques pour surmonter les cas similaires à ceux rencontrés sur ses projets de test. Les utilisateurs peuvent également contrôler les arguments utilisés pour appeler la commande make lors de l’extraction des informations du projet : Settings/Preferences | Build, Execution, Deployment | Makefile | Arguments.
Qu’est-il prévu pour la suite ?
- Il existe un plugin de prise en charge de Makefile qui fournit la mise en évidence du code et une prise en charge partielle de la génération de projets make. JetBrains va le retravailler et l’intégrer dans CLion.
- L’intégration des tests unitaires sera activée pour les projets Makefile ultérieurement.
- Il est prévu d’ajouter la possibilité de lier Makefile à un projet existant.
- La modification de la chaîne d’outils ou d’autres paramètres affectant le chargement du projet pour déclencher le rechargement.
- Pour étendre la prise en charge des projets GNU Autotool, autoriser les utilisateurs à paramétrer l’étape de « préconfiguration » pour les projets Makefile.
- Prendre en charge des Makes non GNU (NMake, BSD).
- Implémenter l’approche avec les wrappers du compilateur pour la rendre fonctionnelle en combinaison avec l’approche actuelle.
Liste des projets
Téléchargez gratuitement CLion 2020.2 EAP2
Source : JetBrains