如何在Windows 7上使用Vim的“ make”命令和Visual Studio的編譯器來編譯C程序?

How do I compile C programs using Vim's 'make' command with Visual Studio's compiler on Windows 7?
投票:6回答:3

我正在嘗試將Vim設置為用戶VS(快速)C編譯器cl.exe 新增中

set makrprg='c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cl.exe'

(我已經嘗試使用\\\\\\\\\\\\\\\\\\轉義到我的_vimrc文件並調用:make %返回以下內容:

:! myfile.c >C:\Users\gvkv\AppData\Local\Temp\VIe7BF5.tmp 2>&1

然後將myfile.c加載到VS的IDE中! 即使cl.exe需要其環境:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat

這仍然很奇怪,我不知道如何進行。

tags:c,vim,windows-7
3回答
3
投票

我在有這樣目標的地方創建了一個makefile

VCPROJ = /path/to/MyProject.vcproj

all:
    "c:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" /nocolor /r $(VCPROJ) Debug

.PHONY: all

我不得不make Vim的路徑,並沒有修改makeprg

這樣,VS可以正常編譯整個項目並vim解析錯誤。


3
投票

我相信您的makeprg語句存在的問題主要是由於路徑中的空格所致。 Cmd.exe要求在空格兩邊加上雙引號。 首先,在路徑(\\“)周圍使用轉義的雙引號。接下來,轉義所有反斜杠(\\)。最後,轉義所有空格(\\)。

set makrprg=\"c:\\Program\ Files\ (x86)\\Microsoft\ Visual\ Studio\ 10.0\\VC\\bin\\cl.exe\"

另外,您可以適當地設置PATH,而直接將makeprg設置為cl.exe


5
投票

Maygarden法官的解決方案是正確的,可以適當地轉義並解決了我遇到的Vim問題,但是我還必須解決其他兩個問題才能使事情正常進行。 尤其是

  1. cl.exe需要正確的環境以及正確的路徑; 即,添加C:\\my\\path\\to\\cl是不夠的。 否則,您將報告有關丟失的DLL的錯誤。 解決方案是將vcvars32.bat (或設置類似環境的任何其他批處理文件)和cl作為單個命令運行。

  2. cmd要求將帶有空格的任何路徑都用雙引號引起來,但您不能使用\\對其進行轉義,因為:! ... :! ...從字面上看待\\ 相反,您必須對雙引號""...進行雙引號。

因此,出於完整性考慮,我想我會發布實際的解決方案。 在Vim(或_vimrc )中:

:set makeprg=\"\"Program\ Files\ (x86)\\Microsoft\ Visual\ Studio\ 10.0\\VC\\bin\\vcvars32.bat\"\&\&cl\"

然後您可以簡單地致電

:make %

到此為止。

該方法很容易推廣到任何編譯器。 而且,正如devemouse的答案所暗示的那樣,為nmake創建一個makefile可能是為任何大小不小的項目做事的最佳方法(我想要一個適合我當前工作的僅Vim解決方案)。


©2020 sofbug.com - All rights reserved.