如何使用Visual Studio 2010的C ++编译器设置Vim进行编译?

时间:2013-01-16 22:24:38

标签: c++ windows visual-studio-2010 visual-c++ vim

我可以通过运行 vcvarsall.bat 从命令行编译,然后以源文件作为唯一参数运行 cl.exe 。问题是,如果没有先使用上述批处理文件设置环境,只运行 cl.exe 会因“缺少库”而导致错误。

我可以想一些相关的解决方法,例如在我的项目目录中创建一个包含 vcvarsall.bat 的批处理文件并完成所有编译。在我看来,这似乎是一个非常麻烦和不灵活的解决方案。我更喜欢能够像在Unix中那样从Vim编译和运行任何C或C ++文件:

:nnorebind <F5> :! g++ %<CR>

我不想添加 vcvarsall.bat 永久添加到环境中的路径堆。我不知道如何更好地表达我的问题:如何设置Vim以便能够使用Visual Studio 2010 C ++编译器?

3 个答案:

答案 0 :(得分:3)

您可以在Vim中更新环境变量。例如,要将“c:\ foo”添加到PATH的开头:

let $PATH='c:\\foo;'.$PATH

我将vcvars * .bat文件的相关部分复制到我的vimrc:

if !exists("visual_studio_paths_added")
    let visual_studio_paths_added = 1
    let $PATH="C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\Common7\\IDE;C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\BIN;C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\Common7\\Tools;C:\\Windows\\Microsoft.NET\\Framework\\v3.5;C:\\Windows\\Microsoft.NET\\Framework\\v2.0.50727;C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\VCPackages;C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0A\\bin;".$PATH
    let $INCLUDE="C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\ATLMFC\\INCLUDE;C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\INCLUDE;C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0A\\include;".$INCLUDE
    let $LIB="C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\ATLMFC\\LIB;C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\LIB;C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0A\\lib;".$LIB
    let $LIBPATH="C:\\Windows\\Microsoft.NET\\Framework\\v3.5;C:\\Windows\\Microsoft.NET\\Framework\\v2.0.50727;C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\ATLMFC\\LIB;C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\LIB;".$LIBPATH
endif

根据您的Visual Studio版本和安装目录,根据需要进行调整。

就我而言,我把它放在一个函数中。当我想使用Visual Studio时,我会调用:vcvars。但是你可以随时包含这些变化。

答案 1 :(得分:1)

扩展DavidRodríguez的评论 - dribeas,并了解vcvarsall.bat如何接受参数,我发现在源树中包含以下文件会很有帮助:

vc.bat

call "%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" amd64 & %*

根据需要调整MSVS版本和平台,或者根据需要制作其他参数。 %VS...COMNTOOLS%环境变量由MSVC安装程序设置,这使得上述内容与实际安装路径无关。

这允许我在适当的MSVC环境中运行任何<command>,方法是:

vc.bat <command>

如果不带参数调用,它只会为当前shell设置环境而不执行任何进一步的命令。

如果您想更进一步,可以使用CMake,这是一个元构建系统,允许您从单个(CMake语法)配置生成Unix Makefile,MSVC解决方案和其他几种构建文件类型。 Windows上支持的其中一种构建文件类型是 NMake Makefiles ...而Windows上的nmake <target>与Unix上的make <target>处理方式差不多。

答案 2 :(得分:0)

使用Visual Studio 2017社区,Mud的解决方案对我无效。路径不同。我认为DevSolar使用vcvarsall.bat的方式更可靠,因为它让VS能够处理正确的路径。

由于我不想使用我的vim配置随身携带.bat文件,我一直在寻找一种仅在.vimrc中工作的解决方案:

  1. 将vcvarsall.bat添加到PATH。就我而言c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC
  2. 将以下内容放在.vimrc中,按F8编译当前文件

    nnoremap <F8> :!vcvarsall.bat && cl /EHsc % <CR>