如何在 Windows 7 上使用 Vim 的“make”命令和 Visual Studio 的编译器编译 C 程序?
Posted
技术标签:
【中文标题】如何在 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? 【发布时间】:2011-07-30 11:31:58 【问题描述】:我正在尝试将 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
这仍然很奇怪,我不知道如何继续。
【问题讨论】:
不要转义反斜杠,而是尝试将斜杠朝另一个方向翻转(Windows 可以处理)。此外,大多数 Make 程序都有调试选项。这些有助于追踪问题。 【参考方案1】:Judge Maygarden 的解决方案在正确转义方面是正确的,并解决了我遇到的 Vim 问题,但我还必须解决其他几个问题才能使事情正常进行。特别是
cl.exe
需要正确的环境以及正确的路径;即,添加 C:\my\path\to\cl
是不够的。否则,您将收到关于缺少DLL
s 的错误报告。解决方案是将vcvars32.bat
(或设置类似环境的任何其他批处理文件)和cl
作为单个命令运行。
cmd
要求任何带有空格的路径都用双引号引起来,但你不能用\
转义它们,因为:! ...
对待\
字面意思;相反,您必须双引号 ""...
。
所以,为了完整起见,我想我会发布我的实际解决方案。在 Vim(或 _vimrc
)中:
:set makeprg=\"\"Program\ Files\ (x86)\\Microsoft\ Visual\ Studio\ 10.0\\VC\\bin\\vcvars32.bat\"\&\&cl\"
然后你可以简单地调用
:make %
你就完成了。
这个方法很容易推广到任何编译器。此外,正如 devemouse 的回答所暗示的那样,为 nmake
创建一个 makefile 可能是为任何非平凡项目做事的最佳方式(我想要一个适合我当前工作的仅 Vim 解决方案)。
【讨论】:
【参考方案2】:我相信您的 makeprg 语句的问题主要是由于路径中的空格。 Cmd.exe 需要在空格两边加上双引号。首先,在路径周围使用转义双引号 (\")。接下来转义所有反斜杠 (\)。最后,转义所有空格 (\)。
set makrprg=\"c:\\Program\ Files\ (x86)\\Microsoft\ Visual\ Studio\ 10.0\\VC\\bin\\cl.exe\"
或者,您可以适当地设置您的 PATH,然后直接将 makeprg 设置为 cl.exe。
【讨论】:
【参考方案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解析错误。
【讨论】:
以上是关于如何在 Windows 7 上使用 Vim 的“make”命令和 Visual Studio 的编译器编译 C 程序?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 下使用 Vim 的 YouCompleteMe 插件
无法调用 JSLint! jslint.vim 无法在 Windows 7 (x64) 中工作