J’ai chercher pendant longtemps une alternative à Visual Studio pour pouvoir développer en C++ sous Ubuntu et mon choix final a été Monodevelop qui ressemble énormément à Visual Studio. Il ressemble d’ailleurs tellement à Visual qu’il peut ouvrir les .sln mais personnellement cela ne fonctionne pas chez moi.
Installation de Monodevelop
L’installation de Monodevelop est décomposé en plusieurs paquets. Plus vous installerez de paquet et plus il y aura de fonctionnalités dans l’IDE.
sudo apt-get install g++ gcc monodevelop monodevelop-debugger-gdb monodevelop-database exuberant-ctags
Voici une courte description sur ce que font chacun des paquets :
- g++ et gcc : Ce sont les programmes permettant de compiler des programmes C et C++. Il faut l’installer obligatoirement si vous voulez faire du C++.
- monodevelop : Il s’agit de l’IDE Monodevelop. Toutefois dans ce paquet il manque beaucoup de chose pour développer en C++.
- monodevelop-debugger-gdb : Ce paquet permettra de débugger votre programme C++ à la manière de Visual Studio avec les breakspoint et toute la panoplie du parfait petit développeur.
- monodevelop-database : En installant ce paquet vous aurez le plaisir de pouvoir notamment utiliser F12 pour naviguer rapidement dans votre code.
- exuberant-ctags : L’auto-completion sera disponible dans l’IDE en installant ce paquet.
Définir les chemins et les bibliothèques du projet
Si comme moi vous utilisez des bibliothèques créé par vous même et que vous stockez headers et .a dans le même dépôt SVN que votre projet alors vous risquez de vite tomber sur un petit problème. Personnellement je n’ai pas réussi à comprendre dans quel dossier Monodevelop se place pour exécuter la compilation. J’ai donc trouvé une astuce pour faire mes chemins relatif.
Définir les dossiers des headers et librairies
Avant de définir les dossiers contenant les headers et les fichiers .a nous allons regarder la valeur d’une variable importante qui est : ${ProjectDir}. Pour voir la valeur de cette variable, rendez-vous dans les Options du projet > Général > Paramètres principaux > Emplacement des fichiers du projet et retenez bien le chemin indiqué. Vous devrez partir de ce dossier pour vous déplacer dans votre arborescence.
Maintenant que vous connaissez le chemin de la variable ${ProjectDir} il ne vous reste plus qu’a vous rendre dans les Options du projet > Construire > Génération du code > Chemins pour ajouter les dossiers contenant les hearders et les .a dans les deux listes comme ci-dessous.
Pour rappel, lorsque vous devez remonter dans le dossier parent il faut utiliser les deux points comme ceci : ${ProjectDir}/../lib
Linker vos bibliothèques
Maintenant que vous avez défini le dossier contenant les headers et les librairies, il va falloir passer à l’étape suivant : mettre les noms des librairies à linker lors de la compilation. Pour ajouter les librairies, vous allez devoir vous rendre dans les Options du projet > Construire > Génération du code > Bibliothèques.
Depuis cette fenêtre vous n’avez qu’a mettre le nom de la librairie et cliquer sur le bouton Ajouter. Toutefois le nom de la librairie est soumit à quelques restrictions que nous allons voir tout de suite.
Prenons l’exemple de la librairie pthread qui est disponible par défaut sous Ubuntu. Lorsque vous compilez en ligne de commande avec g++ vous mettez le paramètre “-lpthread”. Et bien comme le montre la screenshot (cliquez pour agrandir), ici nous ne montrons pas le préfixe “lib” ou “-l” et nous ne montrons pas non plus une quelconque extension. Cela revient donc à écrire simplement : pthread.
Problème de fin de ligne des fichiers
Si comme moi votre projet était à l’origine écrit sous Windows, vous risquez maintenant lors de la modification et l’enregistrement d’un fichier d’avoir un message de ce type :
The file "/home/.../main.cpp" has line endings which differ from the policy settings. Do you want to convert the line endings?
La solution pour résoudre ce problème se passe dans les options de la solution. Une fois dans les options de la solution rendez-vous (comme dans la screen ci-contre) dans Code Source > Formatage du code > Text File puis choisissez le type de fin de ligne que vous souhaitez.