Microsoft Visual Studio 2010 没有将构建工具放入干净目标的路径中?

Max*_*iso 5 c++ nmake makefile visual-studio-2010

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

nmake /nologo /f makefile.x86.winnt.msvc2010
Run Code Online (Sandbox Code Playgroud)

这很好用。

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

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

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

nmake /nologo /f makefile.x86.winnt.msvc2010 clean
Run Code Online (Sandbox Code Playgroud)

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

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

Dan*_*Dan 4

引用Visual Studio Express 自述文件

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 ==========
Run Code Online (Sandbox Code Playgroud)

要解决此问题:

  1. 打开 Visual Studio 命令提示符窗口。
  2. 通过输入打开 Devenv devenv /useenv
  3. 现在“清洁解决方案”应该可以工作了。

或者:

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