2010-12-22 40 views
1

我在我的Makefile中有一個目標test,在我的項目中有一個名爲test的目錄。在GNU Make中,我可以聲明它像這樣假:NMake .PHONY模擬

.PHONY: all compile test clean docs static 

在NMake中可以這樣做嗎?據http://www.bell-labs.com/project/nmake/tutorial/s6.html,我需要做的

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. 

回答

1

我認爲這是你在找什麼:

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

假目標

pseudotarget是一個標籤,用於替代依賴行中的文件名。它被解釋爲一個不存在的文件,所以是過時的。 NMAKE假定僞目標的時間戳是其所有依賴項中的最新時間戳。如果沒有家屬,則假定當前時間。如果一個僞目標被用作目標,它的命令總是被執行。用作依賴項的僞目標也必須作爲另一個依賴項中的目標出現。但是,該依賴關係不需要具有命令塊。

Pseudotarget名稱遵循目標的文件名語法規則。但是,如果名稱沒有擴展名(即不包含句點),則可能會超過文件名的8個字符的限制,並且可能長達256個字符。

如果我正確地理解它,那麼在nmake中沒有.PHONY(微軟的,那裏有很多nmake風味)。而你發佈的鏈接指出,在最上面:

教程:有點幫助阿爾卡特朗訊執行nmake

也許你可以調用一個測試,另一個測試?

+0

我實際上已經找到了這個網頁,但認爲應該還有一個辦法做到這一點,只是不掛:)也許不是。 – 2010-12-22 12:34:30

3

對於那些誰在NMAKE解決此缺席.PHONY尋求一種方式:

你可能引入的目標,這肯定會是一個僞目標(即選擇一個名字不匹配任何現有的文件/目錄)並使其成爲你意思是一個.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