Определение макроса NMAKE
Макрос NMAKE определяется с помощью этого синтаксиса:
macro_name=string
Macro_name — это сочетание букв, цифр и символов подчеркивания (_
до 1024 символов). Macro_name может содержать вызываемый макрос. Если macro_name полностью состоит из вызываемого макроса, вызываемый макрос не может быть пустым или неопределенным.
Строка может быть любой последовательностью нулевых или более символов. Строка NULL содержит нулевые символы или только пробелы или вкладки. Строка может содержать вызов макроса.
Специальные символы в макросах
Знак числа (#
) после определения указывает комментарий. Чтобы указать литеральный номер входа в макрос, используйте курсор (^
), чтобы избежать его, как и в ^#
.
Знак доллара ($
) задает вызов макроса. Чтобы указать литерал $
, используйте $$
.
Чтобы расширить определение до новой строки, завершите строку обратной косой чертой (\
). При вызове макроса обратная косая черта и после символа новой строки заменяется пробелом. Чтобы указать литеральную обратную косую черту в конце строки, предшествуйте ему с помощью экранного курсора (^
) или следуйте за ним с описателями комментариев (#
).
Чтобы указать литеральный символ новой строки, завершите строку с помощью escape-курсора (^
), как в следующем примере:
CMDS = cls^
dir
Пустые и неопределенные макросы
Макросы NULL и неопределенные макросы расширяются до пустых строк, но макрос, определенный как строка NULL, считается определена в выражениях предварительной обработки. Чтобы определить макрос как строку NULL, не указывайте символы, кроме пробелов или вкладок после знака равенства (=
) в командной строке или файле команд, а также заключите строку NULL или определение в двойные кавычки (" "
). Чтобы отменить отмену макроса, используйте !UNDEF
. Дополнительные сведения см. в директивах предварительной обработки Makefile.
Где следует определять макросы
Определите макросы в командной строке, командном файле, файле makefile или Tools.ini
файле.
В файле makefile или Tools.ini
файле каждое определение макроса должно отображаться в отдельной строке и не может начинаться с пробела или вкладки. Пробелы или вкладки вокруг знака равенства игнорируются. Все строковые символы являются литеральными, включая окружающие кавычки и внедренные пробелы.
В командной строке или командном файле аргументы разделителей пробелов и вкладок и не могут окружать знак равенства. Если строка содержит внедренные пробелы или вкладки, заключите строку или весь макрос в двойные кавычки (" "
).
Приоритет в макроопределениях
Если макрос содержит несколько определений, NMAKE использует определение с наибольшим приоритетом. В следующем списке показано порядок приоритета, от самого высокого до самого низкого:
Макрос, определенный в командной строке
Макрос, определенный в файле makefile или включаемого файла
Наследуемый макрос переменной среды
Макрос, определенный
Tools.ini
в файле
Используется /E
для того, чтобы макросы, унаследованные от переменных среды, переопределить макросы makefile с тем же именем. Используется !UNDEF
для переопределения командной строки.