Compiler un programme C dans Vim sans makefile

Bonsoir à toutes et tous!

Je débute en C…

A l’instar d’un EDI comme Code::Blocks, j’aimerais:

1/ Compiler un programme à partir de Vim sans makefile (ou alors en le créant automatiquement via Vim également)
2/ Exécuter ce même programme toujours à partir de Vim

J’ai parcouru différents sites, mais la plupart montrent un exemple avec makefile.

En fait, le but avoué est de mapper une touche pour la compilation/exécution du programme, dans le genre:

ou encore

Mais je m’y prends surement très mal (soyez indugents svp :slightly_smiling: ).

Donc, pour résumer ma question:

1/ Peut-on compiler ET exécuter le programme en ne mappant qu’une seule touche ?
2/ Quel serait le bon mappage ?
3/ Vaut-il mieux créer un makefile avant l’opération? Comment? Peut-on mapper une touche pour la création de ce même makefile?

Merci d’avance et bonne soirée :slightly_smiling:

ou encore
[code]map <F5> :!gcc -o % -lm %.o<cr>[/code]

[quote="Vonstorm"]1/ Peut-on compiler [u]ET[/u] exécuter le programme en ne mappant qu'une seule touche ?[/quote]
Oui
[quote="Vonstorm"]2/ Quel serait le bon mappage ?[/quote]
[code]map <F5> :!gcc -o %:r % && ./%:r<cr>[/code]
C'était pas si mal ce que tu avais écris. Pour le « %:r » regarde là :
[url=http://forum.debian-fr.org/viewtopic.php?p=103448#p103448]Sujet sur vim dans Truc et astuces[/url]
[quote="Vonstorm"]3/ Vaut-il mieux créer un makefile avant l'opération? Comment? Peut-on mapper une touche pour la création de ce même makefile?[/quote]
L'interêt d'un makefile c'est juste d'automatiser et d'accélérer. Mais que quand on a une série de fichier. Tu peut te faire un modèle de Makefile directement généré par vim mais pas complet.

[quote="Vonstorm"]Merci d'avance et bonne soirée  :slightly_smiling:[/quote]
Merci et bonne journée

ou encore

Oui

C’était pas si mal ce que tu avais écris. Pour le « %:r » regarde là :
Sujet sur vim dans Truc et astuces

L’interêt d’un makefile c’est juste d’automatiser et d’accélérer. Mais que quand on a une série de fichier. Tu peut te faire un modèle de Makefile directement généré par vim mais pas complet.

Merci et bonne journée

Merci Misterfreez!

Grâce à toi, j’avance à pas de géants :slightly_smiling:

Juste un p’tit problème au moment de l’exécution:

Mais si je fais cd /home/dsw/code/Ex1/ et puis ./main dans un terminal, le programme s’exécute bel et bien!

Je suppose que le problème se situe au niveau de .// mais je n’en suis pas sûr…

Pourtant dans le lien que tu m’as donné (et pour lequel je n’avais rien trouvé hier en faisant une recherche sur le mot vim dans la rubrique T&A :open_mouth: ), je ne vois pas ce que je pourrais utiliser d’autre que ./%:r
Ca fonctionne tel quel chez toi :question:

Intéressant tu m’a fait découvrir quelque chose sur vim (comme quoi même après 4 ans).

Tu es où quand tu lance vim ? Dans / ?

À ce moment là je pense qu’il deviens plus simple de créer un makefile.
Encore une fois ça ne marche que pour un seul fichier source.
La commande vim c’est :

Il faut donc un makefile dans le répertoire des source que voici :

[code]CC=gcc
CXX=g++

CXXFLAGS=-Wall -Werror -g -pipe -O2 -march=prescott -fomit-frame-pointer
CFLAGS=$(CXXFLAGS) -ansi

RM = /bin/rm -v

SRC = $(wildcard *.c)
OBJ = $(wildcard *.o)

.PHONY: clean all

all: $(EXEC)

$(EXEC) : $(EXEC).o

$(EXEC).o : $(EXEC).c

clean :
$(RM) $(OBJ)

mrproper: clean
$(RM) $(EXEC)[/code]

Quand je fais :cd, il me retourne /home/dsw

En fait j’exécute Vim via un lanceur…

J’ai également tenté: :cd /home/dsw/code/Ex1 afin de le mettre dans le bon répertoire avant de lancer la commande mappée sur F5, mais le message d’erreur est le même.

Il ne me reste plus qu’à essayer via un makefile… Je te tiens au courant :slightly_smiling:

Fainéant comme je suis, j’ai un peu laissé passer de temps avant de me lancer dans les makefiles.

Entre temps, j’ai trouvé la solution pour ne plus obtenir d’erreur à l’exécution du programme compilé, j’ai ajouté set autochdir à mon .vimrc et tout roule!

Merci encore pour ton aide et bonne soirée! :smiley:

Tu nous ajoute ça un fil dans trucs et astuces que j’ai mis plus haut ?

Bon ben je l’ai fait :slightly_smiling: