Makefile NMake.伪模拟

Makefile NMake.伪模拟,makefile,nmake,Makefile,Nmake,我在Makefile中有一个目标test,在项目中有一个名为test的目录。在GNU Make中,我可以这样声明它是假的: .PHONY: all compile test clean docs static 在NMake中也可以这样做吗?据我所知,我需要做什么 test: .VIRTUAL 但它不起作用: F:\SomePath>nmake test /f msvc.mk Microsoft (R) Program Maintenance Utility Version 10.00

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

.PHONY: all compile test clean docs static
在NMake中也可以这样做吗?据我所知,我需要做什么

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.

我想这就是你想要的:

伪目标

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

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

如果我理解正确的话,你在nmake中没有.PHONY(微软的nmake有很多口味)。您发布的链接在顶部声明:

教程:关于阿尔卡特朗讯nmake的一点帮助


也许你可以把一个测试称为另一个测试?

对于那些正在寻找解决这一问题的方法的人来说。nmake中的虚假:

您可能会引入一个肯定是伪目标的目标(即,选择一个与任何现有文件/目录都不匹配的名称),并使其依赖于您所说的.PHONY。例如:

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

事实上,我已经找到了这个页面,但我认为应该还有一种方法可以做到这一点,只是没有链接:)也许没有。