2009-02-12 19 views
14

Chciałbym skompilować plik CPM bez wyłączania vi.
Wiem : g ++ file.cpp ale wolę : uczynić tak I dodaje ten wiersz w pliku .vimrc
skompilować bezpośrednio z vim

au FileType C set makeprg = gcc \%
au filetype CPP set makeprg = g ++ \%

ale wciąż otrzymuję
"make: ***** Brak określonych celów i nie znaleziono żadnych makefile Zatrzymanie **.." wiadomość.
Czy ktoś może mi powiedzieć, co jest nie tak z moim ustawieniem?
Używam do kompilacji pomyślnie z powyższą opcją.

+1

powoduje wyszukanie pliku o nazwie Makefile w bieżącym katalogu. Czy to może być problem? Sam jestem makefile-newbie, więc to tylko domysły. – Srikanth

+0

Nie wiem, wewnątrz działania, co "au FileType CPP set makeprg" , ale mogę skompilować bez pliku Makefile z innego serwera. Nie rozumiem, dlaczego nie mogę skompilować w moim własnym komputerze. Używam Ubuntu 8.10 –

+0

Nigdy nie słyszałem o: zrobić dotyczące vi. Czy to ulepszenie vima? – mouviciel

Odpowiedz

6

należy zmienić C, Cpp w c, cpp, to działa dobrze.
dziękuję wszystkim, zwłaszcza Rob Wells, Twoja odpowiedź bardzo mi pomogła. Dziękuję Ci.

+1

Zmień również 'set' na' setlocal', aby nie zastąpić domyślnego ustawienia dla innych typów plików. – ZyX

5

Myślę, że jest znacznie łatwiejsze, jeśli napiszesz plik Makefile i umieścisz go tam, gdzie może go znaleźć. Nie jestem pewien, czy faktycznie używasz vi (użyłem tylko Vima), ale kiedy jest kompilacja Makefile powinno być tak proste, jak pisanie : make (nie trzeba ustawiać makeprg).

+0

dziękuję za odpowiedź. ale używam edytora do bardzo małych projektów, takich jak problemy z projektami. więc za każdym razem, gdy piszę kod, Makefile jest dość irytujące. dlatego próbuję użyć: make (direct compile). –

10

Musisz tam podstawienie, spróbuj coś takiego:

set makeprg=gmake\ %:r.o 

Och, to zakłada się, że masz:

  1. a (M | m) akefile w katalogu lub
  2. Domyślne reguły SUFFIX są dostępne dla twojego środowiska (wygląda na to, że ich nie ma)

Sprawdź f lub domyślnie wprowadzając:

make -n <my_file>.o 

i zobacz, czy to da ci coś sensownego.

Jeśli jest makefile w innym miejscu można dodać opcję -f do punktu, w makefile, na przykład:

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

BTW Do nauki o marki, a zwłaszcza gmake, sugeruję konieczności spojrzenie na wspaniałą książkę "Zarządzanie projektami za pomocą GNU Make" (sanitised Amazon link).

HTH.

Pozdrawiam

+0

Dowiedziałem się, jaki był mój problem. dotyczyło to przypadku C, Cpp. Powinienem to zmienić na c, cpp. ale twoja odpowiedź była bardzo pomocna. Dziękuję. –

+0

@ Luc, ?? Lub jest $ *. O nowa składnia vim makeprg? –

+0

$ * nie jest nowym elementem składni makeprg. Zawsze było (z: make). Zostanie zastąpiony przez cel make. Wszystko, czego potrzeba, to mapowanie, które użyje bieżącej%

-5

Po pierwsze, po prostu stwórz krwawy plik. Każde narzędzie oczekuje pracy z marką i jeśli twoje kompilacje są tak proste, potrzeba około 30 sekund, aby napisać plik make, który kompiluje wszystkie pliki cp i cpp do pliku wykonywalnego.

Po drugie, jeśli nie chcą korzystać z pliku make a następnie spróbuj

:help system 

To powinno dać wystarczająco dużo informacji, aby wymyślić własnego polecenia podobnego do tego

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

Dlaczego uważasz, że jest lepszy niż ':! G ++%'? –

+2

@MariusGedminas Dobre pytanie. I wyobrażam sobie, że wszystkie negatywne głosy są partyjne z powodu nerwowości na początku odpowiedzi, która nie jest profesjonalna ani mile widziana. : P –

2

To można łatwo osiągnąć przez zastosowanie podstawowych mapach.

Pierwszy otworzyć plik vimrc i te linie do pliku,

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

Pierwszy wiersz odwzorowuje klawisz F4, aby skompletowanie dokumentacji. Druga linia odwzorowuje klucz F5 na , kompilując i uruchamiając.

Jeśli często używasz gdb, może się to również przydać.

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

Linia ta mapuje klawisz F10, aby skompilować i uruchomić GDB

nadzieję, że to pomaga.