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


Правила пакетного режима

{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...

См. также

Основные понятия

Правила вывода