Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/08/2007, à 14:27

Rominux

[ Mini Greffon Gedit ] Préférer Gedit pour programmer ;-)

Bonjour Ubunteros smile

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 wink à 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 smile

#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 ;-)

luigifab a écrit :

@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