如何在 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 是不够的。否则,您将收到关于缺少DLLs 的错误报告。解决方案是将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】:

我相信您的 ma​​keprg 语句的问题主要是由于路径中的空格。 Cmd.exe 需要在空格两边加上双引号。首先,在路径周围使用转义双引号 (\")。接下来转义所有反斜杠 (\)。最后,转义所有空格 (\)。

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

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

【讨论】:

【参考方案3】:

我创建了一个 ma​​kefile 我有这样的目标:

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 插件

vim打开文件中每行末尾都带有 ^M

Windows 上的 Vim 开始显示 ^M 字符

无法调用 JSLint! jslint.vim 无法在 Windows 7 (x64) 中工作

如何在 Windows 上使用 Vim 编译 C++ 代码?

如何在 Windows 上安装 Astyle 以与 VIM 一起使用