如何在Windows上使用Vim运行":compiler msvc"和":comp msbuild"?

5er*_*ant 6 c++ windows vim visual-studio visual-c++

我有桌面的VS Express (2012) .我还获得了NMAKE.EXE计划吗?

http://msdn.microsoft.com/en-us/library/dd9y37ha.aspx - Microsoft程序维护实用程序(NMAKE.EXE)是一个基于描述文件中包含的命令构建项目的工具.

当我在运行:make后运行时:compiler msvc,shell返回消息" 'nmake'不被识别为内部或外部命令,".如何使用这些命令编译C++程序?NMAKE.EXE工具是否与'nmake'命令有关系?


http://msdn.microsoft.com/en-us/library/wea2sca5(v=vs.90).aspx - MSBuild是Microsoft和Visual Studio的新构建平台.

http://msdn.microsoft.com/en-us/library/dd293626.aspx - 您可以使用MSBuild工具从命令提示符构建Visual C++应用程序.构建过程由您可以创建和编辑的项目文件(.vcxproj)中的信息控制.项目文件根据构建阶段,条件和事件指定构建选项.

我是否因为我的VS Express for Desktop而获得了MSBuild工具?当我在运行后使用时,shell返回消息"'msbuild'不被识别为内部或外部命令,".是否msbuild.vim有关系的MSBuild工具?:make:compiler msbuild

的维护者msbuild.vim说,"我做了脚本使用.NET ...我不知道它是否会为C++编译工作的C#项目......"

如何通过在Vim :compiler msbuild之前运行来编译:make


在这个问题上,编译程序(例如C++源文件)只有两个问题,请回答详细说明:

  1. 怎么用:compiler msvc
  2. 怎么用:compiler msbuild

g3c*_*cko 5

快速搜索了一下: 入门 - 使用VIM进行C/C++编程,这可能是一个很好的起点.

正如user786653所提到的,这是失败的,因为您的PATH不包含nmake.exe所在的目录.您可以检查您的路径

:echo $PATH 
Run Code Online (Sandbox Code Playgroud)

Vim不会替换底层构建功能,它只是包装它.

  1. 从Visual Studio命令提示符启动gVim
  2. 在测试目录中创建新文件:

    TEST.CPP

    #include <iostream>
    int main() { 
        printf("hello world.");
        return 0;
    }
    
    Run Code Online (Sandbox Code Playgroud)

    Makefile文件

    all:
        cl test.cpp 
    
    Run Code Online (Sandbox Code Playgroud)
  3. 设置编译器(gVim)

    :compiler msvc
    
    Run Code Online (Sandbox Code Playgroud)
  4. 编译(gVim)

    :make
    
    Run Code Online (Sandbox Code Playgroud)

我没有msbuild.vim脚本,但通过将"make program"设置为msbuild.exe

:set makeprg=msbuild
Run Code Online (Sandbox Code Playgroud)

您可以通过从包含解决方案(.sln)或项目(.vxcproj)文件的目录运行make来构建,或者您可以使用msbuild.exe命令行,如下所示:

:make c:\Test\Test.sln  /t:Rebuild /p:Configuration=Debug
Run Code Online (Sandbox Code Playgroud)

编译后,您可以检查输出

:copen 
Run Code Online (Sandbox Code Playgroud)

并导航错误(n代表next,p代表previous,r代表倒带到第一个错误)

:cn 
:cp 
:cr 
Run Code Online (Sandbox Code Playgroud)


Chi*_*nke 5

当我使用:make运行后:编译器msbuild,shell返回消息"'msbuild'不被识别为内部或外部命令,".msbuild.vim与MSBuild工具有关系吗?

是.

要在命令提示符中启用msbuild,只需将计算机上.net4框架安装的路径添加到PATH环境变量即可.以下在Windows上为我工作:

您可以通过右键单击"计算机",单击"属性"并单击左侧导航栏上的"高级系统设置"来访问环境变量.在下一个对话框bog上单击"环境变量",向下滚动到"PATH"并对其进行编辑以包含框架的路径(在此处的最后一个条目后不要忘记';'.

作为参考我的道路是C:\Windows\Microsoft.NET\Framework64\v4.0.30319.[1]

虽然我只将它用于C#项目,但我认为它也适用于C++.请记住,你必须运行msbuild 内部项目目录,否则的MSBuild将无法找到您的项目.

为了完整起见,这里是我的vimrc片段(OP已通过电子邮件获得).

noremap <F4> :<C-U>silent make<CR>:redraw!<CR>
au FileType cs compiler msbuild
Run Code Online (Sandbox Code Playgroud)

当然,欢迎使用此编译器脚本的补丁和附加内容!

问候

[1]:如何使用Windows SDK 7.1从命令行运行msbuild?