2017-04-24 91 views
1

我使用gvim編碼C++。由於我的程序涉及cmake,因此我的源位於與我的內部版本不同的目錄中。從vim內製作

如何仍然可以調用:在vim中make,以便在build目錄中找到正確的make文件?

我該如何隨後以相同的命令行風格和一次按鍵啓動我的應用程序?

回答

0

我想出的最簡單方法如下:

:! (cd /path/to/your/cmake/build/directory; make) 

要在同一時間執行程序,您可以將命令與;&&

:! (cd /path/to/your/cmake/build/directory; make && ./myProgram) 

this page,你可以找到一個教程如何綁定這一點,以便在一個關鍵的中風中做到這一點。

說明:

在vim中,你可以用:! command執行任何命令(例如,:! ls)。 通過(cd [...]; [...]),您可以通過創建子shell並將其更改爲子shell中的此目錄來指定執行目錄不同。

+0

好吧謝謝。我將鍵綁定這個然後使生活更輕鬆 –

+0

使用'cmake --build '(或者在'cd'命令'cmake --build .'之後)獨立於生成的工具文件(如果我們選擇爲它生成文件,可以使用它來調用'ninja')。 此外,您可以在項目的根目錄下使用'.vimrc.local',並在其中設置'makeprg'或其他項目特定的命令。你需要在你的主''.vimrc'中添加這樣的內容' '如果filereadable($ HOME。「/.vimrc.local」) source〜/ .vimrc.local endif' – compor

2

TD; LR:剛分配'cd "compi/dir" && make $*'&makeprg(與:let)並運行:make youroptionaltarget -j 4

在另一個Q/A,我已經批評:!make方法。這就是我們20年前用vi所做的。 Vim通過quickfix模式引入了集成編譯功能。請學習vim編譯代碼的方法。

在CMake的情況下,我們確實可以用cmake --someoption compil/dir進行編譯。當我用VC++編譯器進行編譯時,我使用它,由CMake從vim試用。剩下的時間,我寧願避免它,因爲它通過在每行添加number>來擾亂編譯器輸出,這會破壞vim quickfix功能。不幸的是,通過調整&errorformat來忽略這種噪音是沒有辦法的。到目前爲止,我的後處理cmakectest輸出刪除^\d+>

所以。我們真的能做什麼,應該做什麼?我們應該利用vim quickfix功能。這是通過調整&makeprg&efm選項來完成的。就你而言,第一個應該就夠了。用它來改變目錄並執行make。最後用:make編譯和:cn:cp:cc導航錯誤等

如果你想也後臺編譯,你需要知道如何在後臺編譯目錄這不是一個插件目前的一個。我在這裏宣傳我的build-tool-wrappers plugin,它提供了這些功能和一些更多的CMake相關功能。

PS:也可以使用make(和忍者)-c參數。