Правила пакетного режима
{frompath}.fromext{topath}.toext::
commands
Пакетный режим правил вывода обеспечивает только один вызов правила вывода после того, как N команд пройдут через это правило. Без использования правил вывода пакетного режима потребовался бы вызов N команд. N — это количество зависимых элементов, вызывающее срабатывание правила вывода.
Файлы makefile, содержащие правила вывода пакетного режима, должны использоваться с программой NMAKE версии 1.62 или более поздней версии. Чтобы проверить версию NMAKE, используйте макрос _NMAKE_VER, доступный в NMAKE версии 1.62 или выше. Этот макрос возвращает строку, представляющую версию продукта Visual C++.
Единственным синтаксическим отличием от стандартных правил вывода является то, что правило вывода пакетного режима заканчивается двойным двоеточием ("::").
Примечание
Вызываемое средство должно быть способно обработать несколько файлов.Для доступа к зависимым файлам правила вывода пакетного режима должны использовать макрос $<.
Правила вывода пакетного режима могут ускорить процесс построения. Пакетная подача файлов компилятору работает быстрее, так как драйвер компилятора вызывается только один раз. Например, компилятор C и C++ работает быстрее при обработке набора файлов, так как он может оставаться в памяти в течение всего процесса.
В следующем примере показано, как использовать правила вывода пакетного режима:
# sample makefile to illustrate batch-mode inference rules
O = .
S = .
Objs = $O/foo1.obj $O/foo2.obj $O/foo2.obj $O/foo3.obj $O/foo4.obj
CFLAGS = -nologo
all : $(Objs)
!ifdef NOBatch
{$S}.cpp{$O}.obj:
!else
{$S}.cpp{$O}.obj::
!endif
$(CC) $(CFLAGS) -Fd$O\ -c $<
$(Objs) :
#end of makefile
Без использования правил вывода пакетного режима NMAKE выводит следующее:
E:\tmp> nmake -f test.mak -a NOBatch=1
Microsoft (R) Program Maintenance Utility Version 7.00.0000
Copyright (C) Microsoft Corp 1988-2001. All rights reserved.
cl -nologo -Fd.\ -c .\foo1.cpp
foo1.cpp
cl -nologo -Fd.\ -c .\foo2.cpp
foo2.cpp
cl -nologo -Fd.\ -c .\foo3.cpp
foo3.cpp
cl -nologo -Fd.\ -c .\foo4.cpp
foo4.cpp
При использовании правил вывода пакетного режима NMAKE выводит следующее:
E:\tmp> nmake -f test.mak -a
Microsoft (R) Program Maintenance Utility Version 7.00.0000
Copyright (C) Microsoft Corp 1988-2001. All rights reserved.
cl -nologo -Fd.\ -c .\foo1.cpp .\foo2.cpp .\foo3.cpp .\foo4.cpp
foo1.cpp
foo2.cpp
foo3.cpp
foo4.cpp
Generating Code...