Директивы предварительной обработки файла makefile
Препроцессорные директивы в этом случае не учитываются. Начальный восклицательный знак (!) находится в начале строки. Ноль или более пробелов или знаков табуляции могут появляться после знака восклицания для отступа абзаца.
!CMDSWITCHES
{+| –}параметр... Включает каждый параметр, включенный или выключенный. Пробелы и знаки табуляции должны появляться перед оператором + или – ; ничего не должно быть между оператором и буквами параметра. Буквы нечувствительны к регистру и указаны без слэша ( / ). Чтобы включить или выключить несколько параметров, используйте отдельные спецификации !CMDSWITCHES.Только /D, /I, /N и /S могут быть использованы в makefile. В Tools.ini все параметры разрешают исключения /F, /HELP, /NOLOGO, /X и /?. Изменения, указанные в блоке описаний, являются неэффективными до следующего блока описаний. Эта директива обновляет MAKEFLAGS; изменения наследуются путем рекурсии, если указан MAKEFLAGS.
!ERROR текст
Отображает text ошибки U1050, затем останавливает NMAKE, даже if /K, /I, .IGNORE, !CMDSWITCHES, или используется знак тире (–) командного модификатора. Игнорируются пробелы или знаки табуляции перед text.!MESSAGE текст
Отображает text для стандартного вывода. Игнорируются пробелы или знаки табуляции перед text.!INCLUDE[ <] имя файла[ >]
Читает filename как makefile, затем продолжает работать с текущим файлом makefile. Поиск сначала NMAKE для имени файла в определенном либо в текущем каталоге, затем рекурсивно в каталогах всех родительских файлов makefile, затем, если имя файла угловыми заключено в круглые скобки (<>), в каталоги, задаваемые макросом include, присвоено значение переменной среды ВКЛЮЧАТЬ. Полезно передать параметры .SUFFIXES, .PRECIOUS и правила наследования по рекурсии файлу makefiles.!IF constantexpression
Обрабатывает операторы между !IF и следующим !ELSE или !ENDIF, если constantexpression достигает ненулевого значения.!IFDEF имя_макроса
Обрабатывает операторы между !IFDEF и следующим !ELSE или !ENDIF, если macroname определено. Нулевой макрос считается определенным.!IFNDEF имя_макроса
Обрабатывает операторы между !IFNDEF и следующим !ELSE или !ENDIF, если macroname определено.!ELSE[IF константное_выражение | IFDEF имя_макроса| IFNDEF имя_макроса]
Обрабатывает операторы между !ELSE и следующим !ENDIF, если предыдущий оператор !IF, !IFDEF или !IFNDEF был равен нулю. Дополнительные ключевые слова позволяют управлять препроцессорной обработкой.!ELSEIF
Синоним для !ELSE IF.!ELSEIFDEF
Синоним для !ELSE IFDEF.!ELSEIFNDEF
Синоним для !ELSE IFNDEF.!ENDIF
Отмечает конец блока !IF, !IFDEF или !IFNDEF. Любой текст после !ENDIF, находящийся на той же самой строке, игнорируется.!UNDEF имя_макроса
Отменяет macroname.