我已经将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?或者有更好的解决方案吗?
答案 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 ==========
要解决此问题:
- 打开Visual Studio命令提示符窗口。
- 输入
打开Devenvdevenv /useenv
。- 现在“清洁解决方案”应该有效。
醇>或者:
将批处理文件传递给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(或更高版本),这将构建面向未来的版本。