#1 Le 21/08/2007, à 14:27
- Rominux
[ Mini Greffon Gedit ] Préférer Gedit pour programmer ;-)
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
Dernière modification par Rominux (Le 23/08/2007, à 01:10)
Hors ligne
#2 Le 21/08/2007, à 15:07
- xelator
Re : [ Mini Greffon Gedit ] Préférer Gedit pour programmer ;-)
exellent !
Hors ligne
#3 Le 23/08/2007, à 10:32
- compte supprimé
Re : [ Mini Greffon Gedit ] Préférer Gedit pour programmer ;-)
Beau boulot!
Sinon tu aurais pu utiliser Geany : http://doc.ubuntu-fr.org/geany
#4 Le 23/08/2007, à 12:11
- Rominux
Re : [ Mini Greffon Gedit ] Préférer Gedit pour programmer ;-)
Merci xelator et Lun8 :-) J'ai testé Geany, et il me semble qu'il ne peut pas linker les fichiers ouverts entre eux, c'est à dire que le fichier hello.c ( pour reprendre l'exemple de mon premier post ) contenant la fonction hello, appelée dans le main.c n'est pas linker, donc la compilation séparée ne fonctionne pas. Ou alors j'ai fais une fausse manip'. Bizarre tout de même...
Dernière modification par Rominux (Le 23/08/2007, à 14:58)
Hors ligne
#5 Le 11/09/2007, à 21:56
- Diti
Re : [ Mini Greffon Gedit ] Préférer Gedit pour programmer ;-)
Génial !
Dernière modification par Diti (Le 14/09/2007, à 18:16)
Hors ligne
#6 Le 05/10/2008, à 14:29
- kamou
Re : [ Mini Greffon Gedit ] Préférer Gedit pour programmer ;-)
comment faire pour afficher le resultat de l'execution dans le volet du bas plutot que dans un nouveau terminal ?
Hors ligne
#7 Le 06/10/2008, à 17:34
- Vergeylen
Re : [ Mini Greffon Gedit ] Préférer Gedit pour programmer ;-)
Bravo pour l'initiative! Vraiment Excellent!
+1 Pour que tu rédiges un petit tutoriel dans la doc.
@+
Daniel V.
Hors ligne
#8 Le 06/11/2008, à 22:24
- luigifab
Re : [ Mini Greffon Gedit ] Préférer Gedit pour programmer ;-)
@Lun8 : j'ai pas trouvé comment lui faire faire compiler du code c++...
Free Ukraine!
Hors ligne
#9 Le 06/11/2008, à 23:35
- valAa
Re : [ Mini Greffon Gedit ] Préférer Gedit pour programmer ;-)
@Lun8 : j'ai pas trouvé comment lui faire faire compiler du code c++...
j'ai regardé vite fait et je dirais que ça se passe à la ligne 31 :
if [ ${fichier##*.} = c ]; then
remplacer par
if [ ${fichier##*.} = cpp ]; then
(ou cxx, ou ce que tu utilise pour tes sources C++...)
après tu peux utiliser une ch'tite variable du genre :
extension = "cpp"
(...)
if [ ${fichier##*.} = $extension; then
pour que ça soit plus facile à modifier
Dernière modification par valAa (Le 06/11/2008, à 23:36)
Hors ligne
#10 Le 07/11/2008, à 08:38
- valAa
Re : [ Mini Greffon Gedit ] Préférer Gedit pour programmer ;-)
un .h ne se compile pas, il est inclus dans le .cpp (ou .c).
Le compilateur a juste besoin de savoir où se trouve ce fichier...
Si le .h est dans le dossier courant ou dans le $PATH, le compilateur le trouvera tout seul...
Ton problème (si problème il y a) doit venir d'ailleurs...
Hors ligne
#11 Le 24/02/2009, à 17:51
- zily
Re : [ Mini Greffon Gedit ] Préférer Gedit pour programmer ;-)
@Rominux :
c'est très intéressant !! et 1 point pour toi !!
mais j'aimerai bien avoir plus d'explication car j'ai suivi à la lettre tes instructions mais je ne sais pas si j'ai mal compris mais j'ai copié collé ce script dans gedit et je l'ai nommé compilateur et puis j'ai enregistré ds ~/.gnome2/gedit/tools
qd je voulais vérifier en écrivant un code simple truc hello world en C
j'ai cliq sur outils->construire
et le résultat : no makefile found
est ce que tu crois qu'il fallait aussi copier ce script ds gestionnaire d'outils externe ->construire->commande ???
il faut s'entraider si on veut évoluer en informatique !!
connaître ses erreurs aussi est vital !!!
faut jamais oublier rien ne peut remplacer la pratique !!!
Hors ligne