2009-02-12 44 views
14

Tôi muốn biên dịch tệp cpp w/o tắt vi.
Tôi biết : g ++ file.cpp nhưng tôi thích : làm vì vậy tôi thêm vào dòng này trong tập tin vimrc
biên dịch trực tiếp từ vim

au Kiểu Tệp C thiết makeprg = gcc \%
au Kiểu Tệp Cpp thiết makeprg = g ++ \%

nhưng tôi cứ bị
"thực hiện: ***** không có mục tiêu cụ thể và không có makefile tìm thấy Dừng **.." tin nhắn.
bất cứ ai có thể cho tôi biết điều gì sai với cài đặt của tôi?
Tôi sử dụng để biên dịch thành công với tùy chọn ở trên.

+1

thực hiện tìm kiếm tệp có tên Makefile trong thư mục hiện tại của bạn. Có thể đó là vấn đề? Tôi là một người mới làm quen, vì vậy nó chỉ là một dự đoán. – Srikanth

+0

Tôi không biết hành động bên trong của những gì "au FileType CPP đặt makeprg" nhưng tôi biên dịch w/o Makefile từ một máy chủ khác. Tôi không hiểu tại sao tôi không biên dịch trong máy tính của mình Tôi đang sử dụng Ubuntu 8.10 –

+0

Tôi chưa bao giờ nghe nói đến: liên quan đến vi. Nó là một sự cải tiến của vim? – mouviciel

Trả lời

6

tôi nên thay đổi C, Cpp vào c, cpp, sau đó nó hoạt động tốt.

cảm ơn tất cả các bạn, đặc biệt là Rob Wells, câu trả lời của bạn đã giúp tôi rất nhiều. cảm ơn bạn.

+1

Đồng thời thay đổi 'set' thành' setlocal' để không ghi đè cài đặt mặc định cho các loại tệp khác. – ZyX

5

Tôi nghĩ sẽ dễ dàng hơn nếu bạn viết Makefile và đặt nó ở nơi vi có thể tìm thấy nó. Tôi không chắc chắn nếu bạn thực sự sử dụng vi (tôi đã chỉ sử dụng Vim), nhưng khi có một biên dịch Makefile nên được dễ dàng như bằng văn bản : làm cho (không cần thiết makeprg).

+0

cảm ơn bạn đã trả lời. nhưng tôi sử dụng trình soạn thảo cho các vấn đề rất nhỏ như dự án euler. vì vậy mỗi khi tôi viết một mã, làm cho Makefile là khá khó chịu. đó là lý do tại sao tôi đang cố gắng sử dụng: make (biên dịch trực tiếp). –

10

Bạn cần thay thế có, hãy thử một cái gì đó như:

set makeprg=gmake\ %:r.o 

Ồ, điều này giả định rằng bạn đã có:

  1. một (M | m) akefile trong thư mục, hoặc
  2. quy tắc SUFFIX mặc định có sẵn cho môi trường của bạn (có vẻ như không có)

Kiểm tra f hoặc mặc định bằng cách nhập:

make -n <my_file>.o 

và xem điều đó có mang lại cho bạn điều gì đó hợp lý hay không.

Nếu có một makefile trong một vị trí khác, bạn có thể thêm tùy chọn -f để trỏ tại makefile, ví dụ:

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

BTW Đối tìm hiểu về thực hiện, và đặc biệt là gmake, tôi muốn đề nghị có xem cuốn sách tuyệt vời "Quản lý dự án với GNU Make" (sanitised Amazon link).

HTH.

cổ vũ

+0

Tôi tìm hiểu vấn đề của mình là gì. đó là về trường hợp của C, Cpp. Tôi nên đổi thành c, cpp. nhưng câu trả lời của bạn rất hữu ích. Cảm ơn bạn. –

+0

@Luc, ?? Hoặc là $ *. O một cú pháp makeprg mới vim? –

+0

$ * không phải là phần tử cú pháp mới & makeprg. Nó luôn luôn ở đó (với: làm). Nó sẽ được thay thế bằng mục tiêu. Tất cả là cần thiết sau đó, là một ánh xạ sẽ sử dụng%

-5

Trước hết, chỉ cần tạo tệp máu. Mọi công cụ có mong muốn làm việc với make và nếu compilations của bạn là đơn giản, nó mất khoảng 30 giây để viết một tập tin làm cho biên dịch tất cả c và cpp tập tin vào một thực thi.

Thứ hai, nếu bạn từ chối sử dụng một làm cho tập tin sau đó thử

:help system 

Điều đó sẽ cung cấp cho bạn đủ thông tin để đưa ra lệnh riêng của bạn tương tự như sau

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

Tại sao bạn nghĩ nó tốt hơn ':! G ++%'? –

+2

@MariusGedminas Câu hỏi hay. Và tôi tưởng tượng tất cả các lá phiếu tiêu cực là đảng do sự nerdrage trong đầu của câu trả lời, đó là hầu như không chuyên nghiệp hoặc chào đón trên SO. : P –

2

Nó có thể dễ dàng đạt được bằng việc sử dụng các bản đồ quan trọng.

Đầu tiên mở tập tin vimrc của bạn và những dòng này vào tập tin,

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

Dòng đầu tiên bản đồ F4 chìa khóa để biên dịch các tập tin. Dòng thứ hai ánh xạ khóa F5 đến biên dịch và chạy.

Nếu bạn sử dụng gdb thường xuyên thì điều này cũng có thể hữu ích.

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

Dòng này ánh xạ F10 chìa khóa để biên dịch và bắt đầu gdb

Hope this helps.

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