Bonjour Ubunteros =)
Avant hier, je me suis dis qu'il fallait que je reprenne la programmation, notamment en C. Connaissant que CodeBlocks comme IDE, je décide de faire une recherche dans le but de trouver un meilleur support ( plus rapide/ergonomique ) pour programmer. Emacs ne m'attirait pas, Vim faisait trop puriste à mon goût. J'ai donc opté pour Gedit. Cependant, je trouvais ça tout de même énervant de devoir passer de Gedit à un Terminal maintes et maintes fois, Gedit n'intégrant pas de Compilateur/Débugguer. J'ai donc fais plusieurs petites recherches, qui ont abouties, notamment pour la découverte du greffon "Commandes Externes" (
http://live.gnome.org/Gedit/ToolLauncherPlugin) natif dans Gedit (en prenant soin de l'activer). C'est là que j'ai compris que la compilation via Gedit pourrait être automatisée via un script Shell. Alors je me suis lancé ! C'est avec acharnement que j'ai codé
un petit script qui automatise la compilation/exécution de tout les fichiers source .c ouverts en onglet dans Gedit via un simple raccourcis ;-) (J'ai pas trouvé plus simple comme stratégie pour gagner du temps comparativement à un IDE ;-))
Je vous fait part du code source, et suis ouvert à toutes critiques/conseils/améliorations :
#!/bin/sh
# Programme réalisé par Rominux
# [Gedit Tool]
# Comment=Compile les sources, et exécute le binaire
# Input=nothing
# Name=Compiler & Exécuter
# Shortcut=F11
# Applicability=all
# Declarations des composants
# À modifier en fonction des besoins
CC="gcc"
dirObjets="Objets"
CleanObj="No"
# Créé dossier Objets, si inexistant
if [ ! -e $dirObjets ]; then
mkdir $dirObjets
fi
# Récupère le nom de tous les fichiers ouverts via $GEDIT_DOCUMENTS_PATH
echo $GEDIT_DOCUMENTS_PATH | tr ' ' '\n' > $dirObjets/allfiles
# Boucle - Scanne le fichier $dirObjets/allfiles ligne par ligne
while read ligne
do
fichier=`basename $ligne`
# Traitement du premier fichier, si fichier .c, continue, sinon > error.log
if [ ${fichier##*.} = c ]; then
echo "Compilation du fichier "$fichier"..."
# Créé le fichier objet du code source
cd $dirObjets
$CC -c ../$fichier
fichier_o=`basename $fichier .c`'.o'
somme_fichiers=$somme_fichiers$fichier_o' '
cd ../
else
cd $dirObjets
echo "Fichiers non valides :" > error.log
echo "Le fichier $ligne n'a pas été pris en compte : Code source non supporté" >> error.log
cd ../
fi
done < $dirObjets/allfiles
# Compilation des objets
cd $dirObjets
$CC $somme_fichiers -o ../Binaire
# Nettoyage des .o
if [ $CleanObj = Yes ]; then
rm -rf *.o
fi
# Lancement du binaire via GnomeTerminal
gnome-terminal -e ./../Binaire
Le script supporte la compilation séparée 😉 à condition que les fichiers sources soient ouverts en onglet et qu'ils se trouvent dans le même dossier (donc pour le moment, le script n'est adapté qu'au petit projet, du moins après un certain nombre de fichiers dépendants, cela devient énervant de devoir ouvrir tous les sources en même temps, idem si on veut pouvoir bien classer ses sources, mais ce n'est que la version #1 ;-)) Nous avons donc à faire à une (presque xD) véritable simulation d'un makefile automatisé :-P.
Si cela vous intéresse, je peux vous expliquer le principe de fonctionnement, ou simplement vous pouvez jeter un coup d'oeil au source, il y a pas mal de commentaires explicites.
Le script utilise Gcc, mais peut très bien supporté d'autres compilateurs/d'autres langages en prenant soin de modifier la variable $CC dans les composantes. Ce qui est très intéressant, c'est que le debugguer est directement inclus dans Gedit dans le panneau inférieur, ce qui fait qu'on a directement les erreurs de compilation à portée de main :-).
Récapitulatif : Dans Gedit : Édition > Préférences > Greffons > cochez Outils Externes. Enregistrez le code source sus-écrit sous le nom de "compilateur" (par exemple), et placez le dans le répertoire ~/.gnome2/gedit/tools, par défaut il me semble que 'tools' n'est pas créé, le cas échéant, créé le ;-).
Astuce : J'ai également intégré le Greffon nommé ProjectManager (
http://sourceforge.net/projects/gedit-fileset) pour rassembler toutes les sources dans un projet, et n'est plus qu'à presser 'Last Project' pour que le tout s'ouvre sous mes yeux :-) (J'ai même traduit le Greffon en FR, si ça intéresse...).
Screenshot ->
ICI |
LA
(Vous remarquerez que sur le premier screenshot, le fichier Hello.h est ouvert, le script va détecter son extension, reconnaître que ça n'est pas un fichier source de type C, et donc va l'ignorer pour la compilation, idem pour les autres extensions ;-))
Si cela en intéresse quelques uns, je peux tenter de rédiger un tutoriel, et pourquoi pas mettre un lien de celui-ci dans le Wiki, section Gedit ;-).
Bon, je vous laisse regarder, dîtes moi ce que vous en pensez ;-)
Rominux