2009-02-12 5 views
14

Je voudrais compiler le fichier cpp sans désactiver vi.
Je sais que le : g ++ file.cpp mais je préfère : faire donc j'ajouté cette ligne dans le fichier .vimrc
compiler directement à partir de vim

au FileType C set makeprg = gcc \%
au FileType Cpp set makeprg = g ++ \%

mais je continue à obtenir
"Marque: ***** aucun objectif définie et si aucun makefile trouvé Arrêt **.." message.
Quelqu'un peut-il me dire quel est le problème avec mon réglage?
Je compile avec succès avec l'option ci-dessus.

+1

effectue une recherche dans un fichier nommé Makefile dans votre répertoire actuel. Peut-être que c'est le problème? Je suis un makefile-newbie moi-même, donc c'est juste une supposition. – Srikanth

+0

Je ne connais pas l'action interne de ce que "au FileType CPP set makeprg" mais je compile sans Makefile à partir d'un autre serveur. Je ne comprends pas pourquoi je ne compile pas dans mon propre ordinateur J'utilise Ubuntu 8.10 –

+0

Je n'ai jamais entendu parler de: make concernant vi. Est-ce une amélioration de vim? – mouviciel

Répondre

6

je devrais changer C, Cpp en c, cpp, alors cela fonctionne très bien.

merci à tous, en particulier Rob Wells, votre réponse m'a beaucoup aidé. Je vous remercie.

+1

Changez également 'set' en' setlocal' pour ne pas surcharger les paramètres par défaut pour les autres types de fichiers. – ZyX

5

Je pense que c'est beaucoup plus facile si vous écrivez un Makefile et le mettez là où vi peut le trouver. Je ne suis pas sûr si vous utilisez réellement vi (j'ai seulement utilisé Vim), mais quand il y a un Makefile la compilation devrait être aussi facile que l'écriture : make (aucun setprog nécessaire).

+0

merci pour votre réponse. mais j'utilise l'éditeur pour de très petits projets comme les problèmes de projet euler. donc à chaque fois que j'écris un code, Makefile est assez énervant. C'est pourquoi j'essaie d'utiliser le: make (compilation directe). –

10

Vous avez besoin de substitution là, essayer quelque chose comme:

set makeprg=gmake\ %:r.o 

Oh, cela suppose que vous avez:

  1. un (M | m) akefile dans le répertoire, ou
  2. règles SUFFIXES par défaut sont disponibles pour votre environnement (ce qui ressemble il n'y a pas)

Check f ou la valeur par défaut en entrant:

make -n <my_file>.o 

et de voir si cela vous donne quelque chose de sensible.

S'il y a un Makefile dans un autre emplacement, vous pouvez par exemple ajouter l'option -f pour pointer le makefile,:

set makeprg=gmake\ -f\ ../some_other_dir/makefile\ %:r.o 

BTW Pour l'apprentissage de faire, et surtout gmake, je vous suggère d'avoir un coup d'oeil à l'excellent livre "Gestion des projets avec GNU Make" (sanitised Amazon link).

HTH.

acclame

+0

Je découvre quel était mon problème. c'était à propos de C, Cpp. Je devrais le changer en c, cpp. mais votre réponse a été très utile. Merci. –

+0

@Luc, ?? Ou est $ *. O une nouvelle syntaxe vim makeprg? –

+0

$ * n'est pas un élément de syntaxe new & makeprg. Il a toujours été là (avec: make). Il sera remplacé par make target. Tout est nécessaire alors, est un mappage qui utilisera l'actuel% <, ou une autre valeur de la variable comme: make target. –

-5

Tout d'abord, faites simplement le fichier make bloody. Chaque outil attend de travailler avec make et si vos compilations sont aussi simples, il faut environ 30 secondes pour écrire un fichier make qui compile tous les fichiers c et cpp dans un exécutable.

Deuxièmement, si vous refusez d'utiliser un fichier make essayez

:help system 

Cela devrait vous donner assez d'informations à venir avec votre propre commande semblable à ce

:com Mymake call system("g++ ".expand("%")) 
+4

Pourquoi pensez-vous que c'est mieux que ':! G ++%'? –

+2

@MariusGedminas Bonne question. Et j'imagine que tous les votes négatifs sont partis en raison du nerdrage au début de la réponse, ce qui n'est guère professionnel ou bienvenue sur SO. : P –

2

Il peut être facilement atteint par l'utilisation des cartes clés.

d'abord ouvrir votre fichier vimrc et ces lignes dans le fichier,

autocmd filetype cpp nnoremap <F4> :!g++ % -ggdb -o %:r <CR> 
autocmd filetype cpp nnoremap<F5> :!g++ % -ggdb -o %:r && ./%:r <CR> 

La première ligne mappe la touche F4 pour la compilation du fichier. La deuxième ligne mappe la clé F5 à compiler et exécuter.

Si vous utilisez fréquemment gdb, cela peut également s'avérer utile.

autocmd filetype cpp nnoremap<F10> :!g++ % -ggdb -o %:r && gdb -tui %:r <CR> 

Cette ligne mappe la touche F10 pour compiler et lancer gdb

Hope this helps.

Questions connexes