2009-03-17 15 views
8

Uczyłem się C++ i Allegro używając Code :: Blocks w systemie Windows XP, a ostatnio czułem się jak uczenie się Vima. Jednak nie mam pojęcia, jak skompilować program "ręcznie" (tj. Bez użycia IDE).Próba kompilacji i debugowania C++ z Vim

Do kompilacji z poziomu Vima dotarłem aż do ustawienia makprg na gcc, ale rozumiem, że potrzebuję również pliku Makefile. Co to jest i jak mogę to napisać? Czy z plikiem Makefile mogę korzystać z bibliotek takich jak Allegro?

Poza tym dość polubiłem debugger CB (używam gdb). Czy można zrobić coś podobnego z Vimem?

Dziękuję.

+2

Jeśli naprawdę chcesz nauczyć się kompilować programy (lub żyć!) Bez IDE - co moim zdaniem jest wspaniałe - polecam zacząć od czegoś, co NIE JEST Windows, nawet jeśli planujesz tam wrócić . –

Odpowiedz

4

Niekoniecznie potrzebujesz pliku Makefile, ale jest to preferowany (i możliwie najbezpieczniejszy) sposób kompilowania kodu w systemach uniksopodobnych.

Nie wiem, czy GNU Make ma port Windows, ale prawdopodobnie można go uruchomić pod Cygwin.

Aby dowiedzieć się więcej na temat GNU make i Makefile:

również zobaczyć to pytanie: compile directly from vim

Obowiązkowa edycja: Nie używam systemu Windows ani Cygwin. Możesz wziąć epochwolf's advice w tym dziale.

+1

NOOOooo ... unikaj cygwin za wszelką cenę. Jest powolny, brzydki i naprawdę nie ma przewagi nad natywnymi aplikacjami Windows. Jeśli chcesz używać gcc i narzędzi pokrewnych w Windows, potrzebujesz 'mingw' i 'msys'. Dostępna jest również natywna wersja programu make. – davr

+0

Hej, mówię tylko. Nie wiedziałbym, czy Cygwin jest dobry, nie używam Windowsa. =) –

1

Edit1: Kilka zakładki mogą okazać się przydatne:

GNU make tutorial (ten używa gcc i make, więc powinno być aż się aleja)

Another one

Win port niektórych GNU utils Can wspominał; Osobiście ich używam i nie miałem z nimi żadnych problemów na platformie Windows.


Tak, można skompilować bez pliku makefile. Jeśli Twój program jest prosty (na przykład tylko jeden plik), możesz go skompilować, wywołując kompilator i wpisując nazwę programu w tym samym wierszu (nie pamiętasz, jak to działa z gcc). Oczywiście, aby to ułatwić, można go zmapować do klucza w vimie, więc nie musisz przeskakiwać do wiersza polecenia iz powrotem.

Jeśli pracujesz nad większym projektem, który składa się z kilku plików i takich, to plik Makefile jest użyteczny. Będzie "przeszukiwać" pliki, określać zależności, dołączać je do kompilacji, może umieszczać pliki źródłowe w jednym katalogu i wynikowy plik exe w innym i tym podobne. Jest to więc raczej system łączenia i budowania niż kompilacja. Chociaż nazwa GNU, o której mowa w odpowiedzi Can Berk Guder jest popularna, istnieje wiele innych pojęć dotyczących "budowania plików Makefile" ("plik Makefile" stał się synonimem tego rodzaju operacji) - tutaj możesz zobacz inne opcje tego link.Ze względu na swoją część w historii vim ma dobre wsparcie dla: make, ale inne mogą być również łatwo wykorzystane (jest wiele tekstów na ten temat na temat: VimWikia.

Cóż, to wszystko. Tylko moje 0,2 euro :)

4

Spójrz na MinGW. Uniknęłbym Cygwin, jeśli potrzebujesz tylko gcc i make. Będziesz potrzebował zarówno MinGW, jak i MSYS. MSYS ma port Windows make.

Jeśli interesuje Cię więcej funkcji uniksowych dla wiersza poleceń systemu Windows, polecam CoreUtils.

do nauki sprawiają zobaczyć manual

3

nie jestem w eksperta w makefile i debugowania, ale wiem, że Vim pozwala zrobić wiele rzeczy. Na przykład, jeśli chcesz skompilować plik z gcc, nie różni się on od zwykłego sposobu. W trybie normalnym wpisz:

:!gcc file.c -o file 

W rzeczywistości możesz użyć (prawie) wszystkich poleceń systemu, dodając "!" przed twoim rozkazem. gdb współpracuje również z Vima

:!gdb 

Mam nadzieję, że to pomoże.

1

Dopóki masz zainstalowaną GNU-make (z cygwinem lub mingw pod Windowsem), nie musisz pisać makefile dla projektów pojedynczych plików. Wystarczy uruchomić :make od vima, i to wystarczy.

Jeśli twój projekt składa się z kilku plików, będziesz musiał napisać plik Makefile (lub jakikolwiek odpowiednik dla scons, aap, (b) dżem, mrówka, ...), nastroić swój &makeprg w konsekwencji, a na koniec zadzwoń pod numer :make z vim. Zobacz odpowiednią kategorię w vimtips. Można oczywiście uruchomić kompilator, tak jak byś uruchomił jakiekolwiek inne narzędzie zewnętrzne, ale straciłbyś możliwość przeskoczenia do wiersza błędu (ów).

Uwaga: w przypadku korzystania z wersji vim i gcc-cygwin w wersji win32 należy przetłumaczyć otrzymane komunikaty o błędach. W tym celu użyłem skryptu perl, który jest teraz częścią bigger suite (nadal w fazie beta)

Odnośnie twojego pytania dotyczącego debugowania, nie można tego zrobić z vima pod oknami w danym momencie. Jedynym debuggerem, który można zintegrować do tej pory, jest gdb, ale tylko pod Linuksem; zobacz projekt pyclewn (.sf.net).

2

Aby zintegrować vim z devenv, możesz użyć programu devenv z Visual Studio do realizacji projektu w vim. Komenda następująco:

Devenv SolutionName /build SolnConfigName [/project ProjName [/projectconfig ProjConfigName]] 

Typicatlly The devenv powinno się w katalogu C: \ Program Files \ Microsoft Visual Studio 8 \ Common7 \ IDE. Ustaw go na ścieżce środowiska, aby był możliwy do wywołania z vim. Musimy również sprawić, aby vim rozpoznawał komunikaty o błędach generowane przez narzędzie devenv z linii poleceń. Wystarczy umieścić następujące wiersze w vimrc:

" Quickfix mode: command line devenv error format 
au FileType cpp set makeprg=devenv.com\ /Build\ Debug\ *[SolutionName]* 
au FileType cpp set errorformat=\ %#%f(%l)\ :\ %#%t%[A-z]%#\ %m 

Następnie można użyć: make, aby skompilować i zbudować program z vim.

0

Nie jestem pewien o debugowaniu, ale znam łatwy sposób na skompilowanie i uruchomienie bieżącego programu, ponieważ napisałem małą wtyczkę vima, aby to zrobić.

http://pastebin.com/qc5Zp2P7

Zakłada używasz kompilatora g ++. Jeśli nie, po prostu zmień nazwę na kompilator, którego używasz. Zapisz ten plik w miejscu, gdzie zainstalowanovvv/ftplugin/cpp.vim

Aby skompilować i uruchomić aktualnie otwarty program, wystarczy wpisać shift-e w trybie innym niż edycja.

Powiązane problemy