2009-03-17 77 views
8

Tôi đã học C++ và Allegro sử dụng Code :: Blocks trên Windows XP và gần đây cảm thấy như học Vim. Tuy nhiên, tôi không có ý tưởng làm thế nào để biên dịch một chương trình "thủ công" (tức là, mà không cần sử dụng một IDE).Cố gắng biên dịch và gỡ lỗi C++ từ Vim

Để biên dịch từ bên trong Vim, tôi đã nhận được như xa như thiết lập makeprg để gcc, nhưng tôi hiểu tôi cũng cần một makefile. Đó là gì và làm thế nào để tôi viết một? Là nó với makefile mà tôi có thể sử dụng các thư viện như Allegro?

Ngoài ra, tôi đã khá thích CB debugger (Tôi đang sử dụng gdb). Có thể làm điều gì đó tương tự với Vim?

Cảm ơn bạn.

+2

Nếu bạn thực sự muốn học cách biên dịch chương trình (hoặc trực tiếp!) Mà không có IDE - điều tôi nghĩ là tuyệt vời - tôi khuyên bạn nên bắt đầu một cái gì đó KHÔNG PHẢI LÀ Windows, ngay cả khi bạn định quay lại . –

Trả lời

4

Bạn không nhất thiết phải cần một Makefile, nhưng đó là cách ưa thích (và có thể là cách tốt nhất) để biên dịch mã trên các hệ thống giống UNIX.

Tôi không biết liệu GNU Make có cổng Windows hay không, nhưng bạn có thể chạy nó dưới Cygwin.

Để tìm hiểu thêm về GNU Make và Makefiles:

Ngoài ra, xem câu hỏi này: compile directly from vim

Chỉnh sửa bắt buộc: Tôi không sử dụng Windows hoặc Cygwin. Bạn có thể muốn lấy epochwolf's advice trên bộ phận đó.

+1

NOOOooo ... tránh cygwin bằng mọi giá. Đó là chậm, xấu xí, và thực sự không có lợi thế hơn các ứng dụng cửa sổ bản địa. Nếu bạn muốn gcc và các công cụ liên quan trên cửa sổ, bạn cần 'mingw' và 'msys'. Có một phiên bản gốc của làm cho bao gồm với họ là tốt. – davr

+0

Xin chào, tôi vừa nói. Tôi sẽ không biết nếu Cygwin là tốt, tôi không sử dụng Windows. =) –

1

EDIT1: Một vài bookmark bạn có thể thấy hữu ích:

GNU make tutorial (cái này sử dụng gcc và chắc, vì vậy nó nên phải lên hẻm của bạn)

Another one

Win port của một số của GNU utils Có thể đã đề cập đến; Cá nhân tôi sử dụng chúng và không gặp bất kỳ vấn đề gì với chúng trên nền tảng Windows.


Có, bạn có thể biên dịch mà không cần makefile. Nếu chương trình của bạn đơn giản (ví dụ, chỉ một tệp) bạn có thể biên dịch bằng cách gọi trình biên dịch và bao gồm tên của chương trình trong cùng một dòng (không nhớ cách nó đi với gcc). Tất nhiên, để làm cho mọi việc dễ dàng hơn, điều này có thể được ánh xạ tới một khóa trong vim, vì vậy bạn không phải nhảy tới dấu nhắc lệnh và ngược lại.

Nếu bạn đang làm việc trên một dự án lớn hơn, trong đó bao gồm một số tệp và như vậy, hơn một makefile là hữu ích. Nó sẽ "tìm kiếm" thông qua các tập tin, xác định phụ thuộc, bao gồm chúng trong xây dựng, có thể đặt các tập tin nguồn trong một thư mục và tập tin exe kết quả trong khác và như vậy. Vì vậy, nó là một hệ thống liên kết và xây dựng hơn là chỉ biên dịch. Mặc dù GNU được đề cập trong câu trả lời của Can Berk Guder là một câu trả lời phổ biến, có rất nhiều cách khác cho "xây dựng makefiles" ("makefile" đã trở thành một loại từ đồng nghĩa cho loại hoạt động đó) - ở đây, bạn có thể xem một số tùy chọn khác trên số link này.Do phần của nó trong lịch sử vim có hỗ trợ tốt cho: làm, nhưng những người khác có thể dễ dàng sử dụng là tốt (có rất nhiều văn bản về chủ đề này trên VimWikia.

Vâng, đó là nó. Chỉ cần 0,2 euro của tôi :)

4

Nhìn vào MinGW. Tôi sẽ tránh Cygwin nếu bạn chỉ cần gcc và thực hiện. Bạn sẽ muốn cả hai MinGW và MSYS. MSYS có một cổng làm cửa sổ.

Nếu bạn quan tâm đến nhiều tính năng unix cho cửa sổ dòng lệnh tôi khuyên bạn nên CoreUtils.

Đối với học tập làm cho thấy manual

3

Tôi không ở chuyên gia trong makefiles và gỡ lỗi nhưng tôi biết rằng Vim cho phép bạn làm được nhiều điều. Ví dụ: nếu bạn muốn biên dịch một tệp với gcc, nó không khác với cách thông thường. Ở chế độ thông thường:

:!gcc file.c -o file 

Thực tế bạn có thể sử dụng (gần như) mọi lệnh hệ thống chỉ bằng cách thêm "!" trước lệnh của bạn. gdb cũng hoạt động với Vim

:!gdb 

Tôi hy vọng nó sẽ giúp bạn.

1

Miễn là bạn đã cài đặt GNU (với Cygwin hoặc mingw dưới cửa sổ), bạn không cần viết một tệp makefile cho các dự án tệp đơn lẻ. Chỉ cần chạy :make từ vim, và điều đó là đủ.

Nếu dự án của bạn được tạo thành từ nhiều tệp, bạn sẽ phải viết một makefile (hoặc bất kỳ tương đương nào cho scons, aap, (b) jam, ant, ...), điều chỉnh &makeprg của bạn. gọi :make từ vim. Xem danh mục có liên quan trong vimtips. Tất nhiên bạn có thể chạy trình biên dịch như bạn đã chạy bất kỳ công cụ bên ngoài nào khác, nhưng bạn sẽ mất khả năng nhảy đến (các) dòng của (các) lỗi.

NB: nếu bạn đang sử dụng phiên bản win32 của vim và gcc-cygwin, bạn sẽ cần dịch các thông báo lỗi thu được. Tôi sử dụng để duy trì một kịch bản perl cho mục đích này, nó bây giờ là một phần của một bigger suite (vẫn còn trong giai đoạn beta)

Về câu hỏi của bạn về gỡ lỗi, nó không thể được thực hiện từ vim dưới cửa sổ cho thời điểm này. Trình gỡ rối duy nhất có thể được tích hợp cho đến nay là gdb, nhưng chỉ dưới linux; xem dự án pyclewn (.sf.net).

2

Để tích hợp vim với devenv, bạn có thể sử dụng devenv từ Visual Studio để tuân thủ dự án trong vim. Lệnh như sau:

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

Kiểu chữ, devenv nên nằm trong C: \ Program Files \ Microsoft Visual Studio 8 \ Common7 \ IDE. Đặt nó vào đường dẫn của môi trường để làm cho nó có thể gọi từ vim. Chúng tôi cũng cần phải làm cho vim nhận ra các thông báo lỗi được ném bởi công cụ xây dựng dòng lệnh devenv. Chỉ cần đặt các dòng sau vào vimrc của bạn:

" 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 

Sau đó, bạn có thể sử dụng: tạo và biên dịch chương trình từ vim.

0

Tôi không chắc chắn về gỡ lỗi, nhưng tôi biết một cách dễ dàng để biên dịch và chạy chương trình hiện tại khi tôi viết một plugin vim nhỏ để làm như vậy.

http://pastebin.com/qc5Zp2P7

Giả sử bạn đang sử dụng trình biên dịch g ++. Nếu không, chỉ cần đổi tên thành trình biên dịch bạn đang sử dụng. Lưu tệp này vào vị tríveryouinstalledvim/ftplugin/cpp.vim

Để biên dịch và chạy chương trình hiện đang mở, chỉ cần nhập shift-e khi đang ở chế độ không chỉnh sửa.

Các vấn đề liên quan