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

gvk*_*vkv 6 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'
Run Code Online (Sandbox Code Playgroud)

(我试着逃跑\\,\\\,\\\\只是要确定)我的_vimrc文件,并调用:make %返回以下内容:

:! myfile.c >C:\Users\gvkv\AppData\Local\Temp\VIe7BF5.tmp 2>&1
Run Code Online (Sandbox Code Playgroud)

和负载myfile.c到VS的IDE!即使cl.exe需要其环境:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat
Run Code Online (Sandbox Code Playgroud)

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

gvk*_*vkv 5

Maygarden法官的解决方案是正确的,可以解决我遇到的Vim问题,但是我还有其他一些问题需要解决才能使事情发生.特别是

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

  2. cmd需要的任何路径有空格用双引号,但你不能用逃避他们\,因为:! ...对待\字面; 相反,你必须双引双引号,""....

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

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

然后你可以简单地打电话

:make %
Run Code Online (Sandbox Code Playgroud)

你完成了

对于任何编译器,此方法都很容易推广.此外,作为devemouse的回答表明,创建一个makefile nmake可能是去做事任何非平凡规模的项目(我想适合我目前的工作仅Vim的解决方案)的最佳途径.


Jud*_*den 3

我相信您的makeprg语句的问题主要是由于路径中的空格造成的。 Cmd.exe需要用双引号将空格括起来。首先,在路径周围使用转义双引号 (\")。接下来转义所有反斜杠 (\)。最后,转义所有空格 (\)。

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

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