如何在Windows 7上使用Visual Studio编译器使用Vim'make'命令编译C程序?

时间:2011-04-06 03:04:28

标签: c vim windows-7

我正在尝试将Vim设置为用户VS(express)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

这仍然很奇怪,我不知道如何继续。

3 个答案:

答案 0 :(得分:5)

Maygarden法官的解决方案是正确的解决方案,并解决了我遇到的Vim问题,但还有一些其他问题我必须解决以使事情有效。特别是

  1. cl.exe需要正确的环境以及正确的路径;即,添加C:\my\path\to\cl是不够的。否则,您将收到有关丢失DLL的错误报告。解决方案是运行vcvars32.bat(或任何其他设置类似环境的批处理文件)和cl作为单个命令。

  2. cmd要求任何带空格的路径都是双引号,但您无法使用\转义它们,因为:! ...会逐字地处理\;相反,您必须双引双引号,""...

  3. 所以,为了完整性,我想我会发布我的实际解决方案。在Vim(或_vimrc)中:

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

    然后你可以直接打电话

    :make %
    

    你已经完成了。

    这种方法很容易适用于任何编译器。另外,正如devemouse的回答所示,为nmake创建一个makefile可能是为任何非平凡大小的项目做最好的方法(我想要一个适合我当前工作的仅限Vim的解决方案)。

答案 1 :(得分: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

我在vim的路径中有make,因此无需修改makeprg

这样VS通常编译整个项目,vim解析错误。

答案 2 :(得分:3)

我认为你的 makeprg 语句的问题主要是由于路径中的空格。 Cmd.exe 需要在空格周围加双引号。首先,在路径(\“)周围使用转义双引号。接下来转义所有反斜杠(\)。最后,转义所有空格(\)。

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

或者,您可以适当地设置 PATH ,然后直接将 makeprg 设置为 cl.exe