NMake .PHONY模拟

时间:2010-12-22 12:12:35

标签: makefile nmake

我的Makefile中有一个目标test,项目中有一个名为test的目录。在GNU Make中,我可以声明它是虚假的:

.PHONY: all compile test clean docs static

是否有可能在NMake中做同样的事情?根据{{​​3}},我需要做

test: .VIRTUAL

但它不起作用:

F:\SomePath>nmake test /f msvc.mk

Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

NMAKE : fatal error U1073: don't know how to make '.VIRTUAL'
Stop.

2 个答案:

答案 0 :(得分:4)

对于那些正在寻求绕过这种缺席的人。在nmake中的PHONY:

您可以引入一个肯定是伪目标的目标(即选择一个与任何现有文件/目录不匹配的名称),并使其成为您对.PHONY的意义的依赖。 E.g:

test: .phony
        dir /b

.phony:

这是输出:

D:\Temp\nmake-phony>nmake

Microsoft (R) Program Maintenance Utility Version 12.00.21005.1
Copyright (C) Microsoft Corporation.  All rights reserved.

        dir /b
Makefile
test

答案 1 :(得分:1)

我认为这就是你要找的东西:

http://msdn.microsoft.com/en-us/library/7sb2acw1%28v=VS.71%29.aspx

  

Pseudotargets

     

伪目标是用于代替依赖行中的文件名的标签。它被解释为一个不存在的文件,因此已经过时了。 NMAKE假设伪目标的时间戳是其所有家属中最新的。如果没有家属,则假定当前时间。如果伪目标用作目标,则始终执行其命令。用作依赖项的伪目标也必须在另一个依赖项中显示为目标。但是,该依赖项不需要具有命令块。

     

伪目标名称遵循目标的文件名语法规则。但是,如果名称没有扩展名(即不包含句点),则文件名可以超过8个字符的限制,最长可达256个字符。

如果我理解正确你在nmake中没有.PHONY(微软,那里有许多nmake风味)。您发布的链接指出了最重要的信息:

  

教程:对阿尔卡特朗讯nmake的帮助

也许您可以调用一个测试而另一个测试?