Директивы предварительной обработки файла 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[ >]
Читает filename как makefile, затем продолжает работать с текущим файлом makefile. NMAKE ищет первый filename в указанной или текущей директории, затем рекурсивно через директории любого родителя makefiles, затем, если filename заключено в угловые скобки (< >), в директориях, указанных в макросе INCLUDE, который первоначально установлен для переменной 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.