У меня есть как цель test в моем Makefile, так и каталог под названием test в моем проекте. В GNU Make я могу объявить это фальшивкой вот так:

.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.
3
Alexey Romanov 22 Дек 2010 в 15:12

2 ответа

Лучший ответ

Думаю, это то, что вы ищете:

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

Псевдотаргеты

Псевдотаргетинг - это метка, используемая вместо имени файла в строке зависимости. Он интерпретируется как несуществующий файл, поэтому он устарел. NMAKE предполагает, что временная метка псевдотаргетинга является самой последней из всех зависимых от нее целей. Если у него нет иждивенцев, предполагается текущее время. Если в качестве цели используется псевдотаргетинг, ее команды всегда выполняются. Псевдо-цель, используемая в качестве зависимой, также должна выступать в качестве цели в другой зависимости. Однако для этой зависимости не требуется блок команд.

Имена псевдотаргетов соответствуют правилам синтаксиса имени файла для целей. Однако, если имя не имеет расширения (т. Е. Не содержит точки), оно может превышать ограничение в 8 символов для имен файлов и может иметь длину до 256 символов.

Если я правильно понимаю, у вас нет .PHONY в nmake (у Microsoft есть много разновидностей nmake). И ссылка, которую вы разместили, гласит, что вверху:

Учебное пособие: небольшая справка по Alcatel-Lucent nmake

Может быть, вы могли бы назвать один тест, а другой тесты?

3
Community 20 Июн 2020 в 12:12
Я действительно нашел эту страницу, но предположил, что все еще должен быть способ сделать это, просто не связанный :) Возможно, нет.
 – 
Alexey Romanov
22 Дек 2010 в 15:34

Для тех, кто ищет способ обойти этот отсутствующий .PHONY в 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
8
Dmitry Egorov 25 Сен 2015 в 16:54