2009-02-12 39 views
14

我想編譯沒有關閉vi的cpp文件。
我知道:G ++ file.cpp但我更喜歡:讓,所以我說在.vimrc文件
直接從vim編譯

AU文件類型賬套makeprg = gcc的\%
AU文件類型的cpp該線設置makeprg = G ++ \%

,但我不斷收到
「使:*****沒有指定目標,並沒有發現makefile文件停止**。」 消息。
任何人都可以告訴我我的設置有什麼問題嗎?
我用上面的選項成功編譯。

+1

在當前目錄中搜索名爲Makefile的文件。可能是這個問題?我自己是一個makefile-newbie,所以這只是一個猜測。 – Srikanth 2009-02-12 10:25:58

+0

我不知道什麼「au FileType CPP set makeprg」 的內部動作,但我從另一個服務器編譯w/o Makefile。我不明白爲什麼我不能在我自己的電腦中編譯 我使用的是Ubuntu 8.10 – 2009-02-12 10:31:09

+0

我從來沒有聽說過:關於vi的make。這是對vim的改進嗎? – mouviciel 2009-02-12 10:34:06

回答

6

我應該改變C,Cpp分成c,cpp,那麼它工作正常。

謝謝大家,特別是Rob Wells,你的回答幫了我很多。謝謝。

5

我覺得如果你編寫一個Makefile並把它放在vi可以找到的地方就容易多了。我不確定你是否真的使用vi(我只使用過Vim),但是當有Makefile編譯時,應該像編寫:make(不需要set makeprg)一樣簡單。

+0

謝謝你的回答。但是我使用編輯器來處理項目euler問題等非常小的項目。所以每次我寫代碼,都會讓Makefile變得很刺激。這就是爲什麼我試圖使用:make(直接編譯)。 – 2009-02-12 10:29:17

10

您需要替換在那裏,你可以試試:

set makeprg=gmake\ %:r.o 

哦,這是假定你已經有了:

  1. 一個(M | M)akefile在目錄中,或
  2. 默認SUFFIX規則可用於您的環境(它看起來好像沒有)

檢查f或默認輸入:

make -n <my_file>.o 

看看是否給你一些合理的。

如果在其他位置生成文件,你可以添加-f選項在Makefile點,例如:

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

BTW對於學習化妝,尤其是GMAKE,我建議有看看這本優秀的書「使用GNU Make管理項目」(sanitised Amazon link)。

HTH。

歡呼聲

-5

首先,只是讓血腥的make文件。那裏的每一個工具都希望能夠使用make,如果你的編譯很簡單,那麼編寫一個將所有c和cpp文件編譯成可執行文件的make文件需要大約30秒的時間。

其次,如果你拒絕使用make文件,然後嘗試

:help system 

這應該給你足夠的信息來拿出自己的命令與此類似

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

它可以通過使用關鍵地圖可以輕鬆實現。

首先打開你的vimrc文件以及這些行的文件,

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

第一行映射的關鍵F4以編譯文件。第二行將鍵F5映射到編譯並運行

如果您經常使用gdb,那麼這也可能會得心應手。

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

此行的關鍵F10映射到編譯並啓動gdb

希望這有助於。