Microsoft Visual Studio 2010不会将构建工具放在PATH中以实现干净的目标吗?

时间:2012-10-22 22:23:20

标签: c++ visual-studio-2010 makefile nmake

我已经将Microsoft Visual Studio配置为使用Makefile配置类型,并且我已经编写了一个makefile来使用Microsoft工具构建我的项目。在项目配置的NMake部分下,我将构建命令行设置为build.bat,这是一个简单地使用我的makefile作为命令行参数调用nmake的文件,如下所示:

nmake /nologo /f makefile.x86.winnt.msvc2010

这很好用。

为了清理,我在makefile中编写了一个目标,删除了所有构建工件。它看起来像这样:

#... the rest of the makefile
clean:
    @erase /f /q $(OBJS) $(OUT) $(MAPFILE) $(PDBFILE)
    @echo + clean

所以我将clean命令行设置为nmake调用,并将clean作为参数。像这样:

nmake /nologo /f makefile.x86.winnt.msvc2010 clean

我将此文本放入clean.bat并将其设置为“Clean Command Line”,但它不起作用,因为调用shell无法找到nmake。我在干净调用时检查了路径,并且MSVS不包括路径(包括nmake)中的构建工具以进行清理。 (请注意,运行上面的nmake命令会从PATH中具有nmake的shell成功完成。)

如何让MSVS在PATH中包含构建工具,以便我可以在clean命令行中调用nmake?或者有更好的解决方案吗?

3 个答案:

答案 0 :(得分:4)

引用Visual Studio Express Readme

  

<强> 2。已知问题

     

<强> 2.4。产品问题

     

<强> 2.4.1。一般问题(产品)

     

<强> 2.4.1.14。 Clean Solution不适用于配置类型:Makefile(2010 RC)

     

在nmake解决方案上执行“Clean Solution”报告以下内容   错误:

1>------ Clean started: Project: makefiletest, Configuration: Debug Win32 ------
1>  'nmake' is not recognized as an internal or external command,
1>  operable program or batch file.
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.MakeFile.Targets(33,5):
  error MSB3073: The command "nmake /?" exited with code 9009.
================= Clean: 0 succeeded, 1 failed, 0 skipped ==========
     

要解决此问题:

     
      
  1. 打开Visual Studio命令提示符窗口。
  2.   
  3. 输入devenv /useenv
  4. 打开Devenv   
  5. 现在“清洁解决方案”应该有效。
  6.         

    或者:

         

    将批处理文件传递给clean命令。在批处理文件中,设置   路径到nmake工具以及其他构建环境。

答案 1 :(得分:3)

当然你是对的,MSVC永远不会把它的构建工具放在路上!所以你有两个选择:

  • 从VisualStudio命令提示符

  • 中运行批处理文件
  • 添加%ProgramFiles%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat以启动批处理文件,以向PATH添加所需的路径。

答案 2 :(得分:0)

我认为更好的解决方案是将set PATH=$(VSInstallDir)\BC\bin;%PATH%添加到批处理文件的开头。

如果您将来升级到VS2012(或更高版本),这将构建面向未来的版本。