Specjalne makra NMAKE

NMAKE udostępnia kilka specjalnych makr do reprezentowania różnych nazw plików i poleceń. Jednym z tych makr jest użycie wstępnie zdefiniowanych reguł wnioskowania. Podobnie jak we wszystkich makrach, w makrach udostępnianych przez NMAKE uwzględniana jest wielkość liter.

Makra nazwy pliku

Makra nazwy pliku są wstępnie zdefiniowane jako nazwy plików określone w zależności (nie pełne specyfikacje nazwy pliku na dysku). Te makra nie muszą byćclosed w nawiasach po wywołaniu; określ tylko element , $ jak pokazano.

Macro Znaczenie
$@ Pełna nazwa bieżącego obiektu docelowego (ścieżka, nazwa podstawowa, rozszerzenie), zgodnie z bieżącymi danymi.
$$@ Pełna nazwa bieżącego obiektu docelowego (ścieżka, nazwa podstawowa, rozszerzenie), zgodnie z bieżącymi danymi. Prawidłowe tylko jako zależność zależna.
$* Ścieżka bieżącego obiektu docelowego i nazwa podstawowa minus rozszerzenie pliku.
$** Wszystkie zależnych od bieżącego celu.
$? Wszystkie zależności z późniejszym znacznikiem czasu niż bieżący element docelowy.
$< Plik zależny z późniejszym znacznikiem czasu niż bieżący element docelowy. Prawidłowe tylko w poleceniach w regułach wnioskowania.

Aby określić część wstępnie zdefiniowanego makra nazwy pliku, dołącz modyfikator makra i wprowadźclzmodyfikowane makro w nawiasach.

Modyfikator Wynikowa część nazwy pliku
D Dysk plus katalog
B Nazwa podstawowa
F Nazwa podstawowa i rozszerzenie
R Dysk plus katalog plus nazwa podstawowa

Makra rekursji

Użyj makr rekursji, aby wywołać rekursywnie NMAKE. Rekursywne sesje dziedziczą makra wiersza polecenia i zmiennej środowiskowej oraz Tools.ini informacje. Nie dziedziczą reguł wnioskowania zdefiniowanych przez plik make ani .SUFFIXES.PRECIOUS specyfikacji. Istnieją trzy sposoby przekazywania makr do cyklicznej sesji NMAKE:

  • Ustaw zmienną środowiskową SET za pomocą polecenia przed wywołaniem cyklicznym.
  • Zdefiniuj makro w poleceniu dla wywołania cyklicznego.
  • Możesz też zdefiniować makro w pliku Tools.ini.
Macro Definicja
MAKE Polecenie używane pierwotnie do wywoływania NMAKE.

Makro $(MAKE) daje pełną ścieżkę do nmake.exe.
MAKEDIR Bieżący katalog po wywołaniu narzędzia NMAKE.
MAKEFLAGS Obecnie obowiązują opcje. Użyj jako /$(MAKEFLAGS). Opcja /F nie jest wcluded.

Makra poleceń i makra opcji

Makra poleceń są wstępnie zdefiniowane dla produktów firmy Microsoft. Makra opcji reprezentują opcje dla tych produktów i są domyślnie niezdefiniowane. Oba są używane w wstępnie zdefiniowanych reguł wnioskowania i mogą być używane w blokach opisu lub regułach wnioskowania zdefiniowanych przez użytkownika. Makra poleceń można ponownie zdefiniować w celu reprezentowania części lub całego wiersza polecenia wclopcjach zdefiniowanych przez użytkownika. Makra opcji generują ciąg o wartości null, jeśli pozostawiono niezdefiniowane.

Narzędzie Makro polecenia Zdefiniowane jako Makro opcje
Asembler makr AS ml lub ml64 AFLAGS
Kompilator języka C CC cl CFLAGS
Kompilator C++ CPP cl CPPFLAGS
Kompilator C++ CXX cl CXXFLAGS
Resource Compiler RC rc RFLAGS

Makra zmiennych środowiskowych

NMAKE dziedziczy definicje makr dla zmiennych środowiskowych, które istnieją przed rozpoczęciem sesji. Jeśli zmienna została ustawiona w środowisku systemu operacyjnego, jest dostępna jako makro NMAKE. Dziedziczone nazwy są konwertowane na ase upperc. Dziedziczenie następuje przed przetwarzaniem wstępnym. Użyj opcji /E, aby spowodować, że makra dziedziczone ze zmiennych środowiskowych zastępują wszystkie makra o tej samej nazwie w pliku make.

Makra zmiennych środowiskowych można ponownie zdefiniować w sesji. Spowoduje to zmianę odpowiedniej zmiennej środowiskowej. Zmienne środowiskowe można również zmienić za pomocą polecenia SET. Użycie polecenia SET w celu zmiany zmiennej środowiskowej w sesji nie powoduje jednak zmiany odpowiedniego makra.

Przykład:

PATH=$(PATH);\nonesuch

all:
    echo %%PATH%%

W tym przykładzie zmiana zmienia PATH odpowiadającą mu zmienną środowiskową PATH; dołącza \nonesuch ją do ścieżki.

Jeśli zmienna środowiskowa jest zdefiniowana jako ciąg, który będzie składniowo niepoprawny w pliku make, żadne makro nie zostanie utworzone i nie zostanie wygenerowane żadne ostrzeżenie. Jeśli wartość zmiennej zawiera znak dolara ($), NMAKE interpretuje ją jako początek wywołania makra. Użycie makra może spowodować nieoczekiwane zachowanie.

Zobacz też

Makra i NMAKE