我使用gvim編碼C++。由於我的程序涉及cmake,因此我的源位於與我的內部版本不同的目錄中。從vim內製作
如何仍然可以調用:在vim中make,以便在build目錄中找到正確的make文件?
我該如何隨後以相同的命令行風格和一次按鍵啓動我的應用程序?
我使用gvim編碼C++。由於我的程序涉及cmake,因此我的源位於與我的內部版本不同的目錄中。從vim內製作
如何仍然可以調用:在vim中make,以便在build目錄中找到正確的make文件?
我該如何隨後以相同的命令行風格和一次按鍵啓動我的應用程序?
我想出的最簡單方法如下:
:! (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中的此目錄來指定執行目錄不同。
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
來忽略這種噪音是沒有辦法的。到目前爲止,我的後處理cmake
和ctest
輸出刪除^\d+>
。
所以。我們真的能做什麼,應該做什麼?我們應該利用vim quickfix功能。這是通過調整&makeprg
和&efm
選項來完成的。就你而言,第一個應該就夠了。用它來改變目錄並執行make
。最後用:make
編譯和:cn
,:cp
,:cc
導航錯誤等
如果你想也後臺編譯,你需要知道如何在後臺編譯目錄這不是一個插件目前的一個。我在這裏宣傳我的build-tool-wrappers plugin,它提供了這些功能和一些更多的CMake相關功能。
PS:也可以使用make
(和忍者)-c
參數。
好吧謝謝。我將鍵綁定這個然後使生活更輕鬆 –
使用'cmake --build'(或者在'cd'命令'cmake --build .'之後)獨立於生成的工具文件(如果我們選擇爲它生成文件,可以使用它來調用'ninja')。 此外,您可以在項目的根目錄下使用'.vimrc.local',並在其中設置'makeprg'或其他項目特定的命令。你需要在你的主''.vimrc'中添加這樣的內容' '如果filereadable($ HOME。「/.vimrc.local」) source〜/ .vimrc.local endif' –
compor