2009-02-12 12 views
14

Ich würde gerne cpp Datei ohne Ausschalten vi kompilieren.
Ich weiß, das : g ++ file.cpp aber ich ziehe es : make so habe ich diese Zeile in .vimrc Datei
kompilieren direkt von vim

au Filetype C eingestellt makeprg = gcc \%
au Filetype Cpp set makeprg = g ++ \%

aber ich erhalte immer
"machen: ***** keine Ziele angegeben und keine Make-Datei gefunden Stopp **.." -Meldung.
kann mir jemand sagen, was falsch mit meiner Einstellung ist?
Ich verwende, um mit der obigen Option erfolgreich zu kompilieren.

+1

Suchen Sie eine Datei namens Makefile in Ihrem aktuellen Verzeichnis. Vielleicht ist das das Problem? Ich bin selbst Makefile-Neuling, also ist es nur eine Vermutung. – Srikanth

+0

Ich weiß nicht die innere Aktion von was "Au FileType CPP set makepr" , aber ich kompiliere w/o Makefile von einem anderen Server. Ich verstehe nicht, warum ich nicht in meinem eigenen Computer kompilieren Ich benutze Ubuntu 8.10 –

+0

Ich habe noch nie gehört: machen über vi. Ist es eine Verbesserung von vim? – mouviciel

Antwort

6

sollte ich ändern zu kommen geben sollte C, Cpp in c, cpp, dann funktioniert es gut.

danke Ihnen allen, vor allem Rob Wells, hat Ihre Antwort mir sehr geholfen. Danke.

+1

Ändern Sie auch 'set' in' setlocal', um die Standardeinstellung für andere Dateitypen nicht zu überschreiben. – ZyX

5

Ich denke, es ist viel einfacher, wenn Sie ein Makefile schreiben und es dort ablegen, wo vi es finden kann. Ich bin nicht sicher, ob Sie tatsächlich vi verwenden (ich habe nur Vim verwendet), aber wenn es ein Makefile Compiling sollte so einfach wie das Schreiben sein : make (kein Set Makeprg benötigt).

+0

danke für deine antwort. aber ich benutze den Editor für sehr kleine Projekte wie Projekt Euler Probleme. Also jedes Mal, wenn ich einen Code schreibe Makefile ist ziemlich irritierend. Deshalb versuche ich das: make (direkte Kompilierung) zu verwenden. –

10

Sie benötigen die Substitution gibt, versuchen Sie so etwas wie:

set makeprg=gmake\ %:r.o 

Oh, das davon ausgeht, dass du hast:

  1. a (M | m) akefile im Verzeichnis oder
  2. (nicht sind, was es wie es aussieht)

prüfen f

  • Standard Suffixregeln sind für Ihre Umgebung verfügbar oder der Standardwert durch Eingabe von:

    make -n <my_file>.o 
    

    und sehen, ob das Ihnen etwas Sinnvolles gibt.

    Wenn es eine Make-Datei an einem anderen Ort ist, können Sie die Option -f hinzufügen an der Make-Datei zu verweisen, zum Beispiel:

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

    BTW zu machen für das Lernen, und vor allem gmake, würde ich vorschlagen, die ein Blick auf das ausgezeichnete Buch "Managing Projects with GNU Make" (sanitised Amazon link).

    HTH.

    prost

  • +0

    Ich finde heraus, was mein Problem war. es war ungefähr Fall von C, Cpp. Ich sollte es in c, cpp ändern. aber deine Antwort war sehr hilfreich. Danke. –

    +0

    @Luc, ?? Oder ist $ *. O eine neue vim makepr Syntax? –

    +0

    $ * ist kein neues & makeprg-Syntaxelement. Es war schon immer da (mit: make). Es wird durch make target ersetzt. Alles wird dann benötigt, ist ein Mapping, das den aktuellen%

    -5

    Zunächst einmal machen nur die blutige Make-Datei. Jedes Tool da draußen erwartet, mit make zu arbeiten, und wenn Ihre Compilations so einfach sind, dauert es ungefähr 30 Sekunden, um eine make-Datei zu schreiben, die alle c- und cpp-Dateien zu einer ausführbaren Datei kompiliert.

    Zweitens, wenn Sie sich weigern, eine Make-Datei zu verwenden, dann versuchen

    :help system 
    

    , dass Sie genug Informationen mit Ihrem eigenen Befehl ähnlich wie diese

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

    Warum glaubst du ist es besser als ':! G ++%'? –

    +2

    @MariusGedminas Gute Frage. Und ich stelle mir vor, alle negativen Stimmen sind Partei wegen der Nerdrage am Anfang der Antwort, die auf SO kaum professionell oder willkommen ist. : P –

    2

    Es kann leicht durch die Verwendung von Schlüsselkarten erreicht werden.

    Zuerst Ihre vimrc und diese Zeilen in die Datei öffnen,

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

    Die erste Zeile bildet den Schlüssel F4 Kompilieren der Datei. In der zweiten Zeile wird der Schlüssel F5 auf kompiliert und ausgeführt.

    Wenn Sie gdb häufig verwenden, kann dies auch nützlich sein.

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

    Diese Linie bildet den Schlüssel F10, um Kompilierung und starten gdb

    Hoffnung, das hilft.