Поделиться через


Специальные макросы NMAKE

NMAKE предоставляет несколько специальных макросов для представления различных имен файлов и команд. Одно из этих макросов используется в предопределенных правилах вывода. Как и все макросы, макросы, предоставляемые NMAKE, чувствительны к регистру.

Макрос имени файла

Макросы имени файла предопределяются как имена файлов, указанные в зависимости (не полные спецификации имени файла на диске). Эти макросы не должны быть заключены в скобки при вызове; укажите только $, как показано ниже.

Макрос Значение
$@ Полное имя текущего целевого объекта (путь, базовое имя, расширение), как указано в данный момент.
$$@ Полное имя текущего целевого объекта (путь, базовое имя, расширение), как указано в данный момент. Допустимо только в качестве зависимого в зависимости.
$* Путь к текущему целевому объекту и базовое имя минус расширение файла.
$** Все зависимые от текущего целевого объекта.
$? Все зависимые от более поздней метки времени, чем текущий целевой объект.
$< Зависимый файл с последующей меткой времени, чем текущий целевой объект. Допустимы только в командах в правилах вывода.

Чтобы указать часть предопределенного макроса имени файла, добавьте модификатор макроса и заключите измененный макрос в скобки.

Модификатор Результирующая часть имени файла
D Каталог "Диск плюс"
B Базовое имя
F Базовое имя плюс расширение
R Диск плюс каталог плюс базовое имя

Макросы рекурсии

Используйте макросы рекурсии для вызова NMAKE рекурсивно. Рекурсивные сеансы наследуют макросы и макросы Tools.ini переменных среды и среды. Они не наследуют правила вывода и .SUFFIXES.PRECIOUS спецификации, определенные в файле makefile. Существует три способа передачи макросов рекурсивному сеансу NMAKE:

  • Задайте переменную среды с SET помощью команды перед рекурсивным вызовом.
  • Определите макрос в команде для рекурсивного вызова.
  • Или определите макрос в Tools.ini.
Макрос Определение
MAKE Команда, используемая первоначально для вызова NMAKE.

Макрос $(MAKE) предоставляет полный путь.nmake.exe
MAKEDIR Текущий каталог при вызове NMAKE.
MAKEFLAGS Параметры, действующие в настоящее время. Используйте как /$(MAKEFLAGS). Параметр /F не включен.

Макросы команд и параметров

Макросы команд предопределяются для продуктов Майкрософт. Макросы параметров представляют параметры этих продуктов и не определены по умолчанию. Оба используются в предопределенных правилах вывода и могут использоваться в блоках описания или в определяемых пользователем правилах вывода. Макросы команд можно переопределять для представления части или всей командной строки, включая параметры. Макросы параметров создают строку NULL, если слева не определено.

Средство Макрос команды Определяется как Макрос параметров
Сборщик макросов AS ml или ml64 AFLAGS
Компилятор C CC cl CFLAGS
Компилятор C++ CPP cl CPPFLAGS
Компилятор C++ CXX cl CXXFLAGS
компилятор ресурсов RC rc RFLAGS

Макросы переменных среды

NMAKE наследует определения макросов для переменных среды, которые существуют до начала сеанса. Если переменная была задана в среде операционной системы, она доступна как макрос NMAKE. Унаследованные имена преобразуются в верхний регистр. Наследование происходит перед предварительной обработкой. Используйте параметр /E, чтобы вызвать макросы, унаследованные от переменных среды, чтобы переопределить все макросы с тем же именем в файле makefile.

Макросы переменных среды можно переопределять в сеансе, и это изменяет соответствующую переменную среды. Можно также изменить переменные среды с помощью команды SET. Команда SET для изменения переменной среды в сеансе не изменяет соответствующий макрос.

Например:

PATH=$(PATH);\nonesuch

all:
    echo %%PATH%%

В этом примере изменение PATH изменяет соответствующую переменную PATHсреды; она добавляется \nonesuch к пути.

Если переменная среды определена как строка, которая будет синтаксически неверной в файле makefile, макрос не создается и не создается предупреждение. Если значение переменной содержит знак доллара ($), NMAKE интерпретирует его как начало вызова макроса. Использование макроса может вызвать непредвиденное поведение.

См. также

Макросы и программа NMAKE