Regole in modalità batch
Aggiornamento: novembre 2007
{frompath}.fromext{topath}.toext::
commands
Le regole di inferenza in modalità batch consentono una sola chiamata della regola di inferenza quando quest'ultima è sottoposta a N comandi. In assenza di regole di inferenza in modalità batch, sarebbe necessario richiamare N comandi. N è il numero di dipendenti che attivano la regola di inferenza.
I makefile contenenti regole di inferenza in modalità batch devono utilizzare NMAKE 1.62 o versione successiva. Per controllare la versione di NMAKE, eseguire la macro _NMAKE_VER disponibile in NMAKE 1.62 o versione successiva. Questa macro restituisce una stringa che indica la versione di Visual C++.
L'unica differenza sintattica rispetto alla regola di inferenza standard consiste nel fatto che la regola di inferenza in modalità batch termina con una coppia di due punti (::).
Nota: |
---|
Lo strumento richiamato deve consentire la gestione di più file. Nelle regole di inferenza in modalità batch la macro utilizzata per accedere ai file dipendenti deve essere $<. |
L'utilizzo delle regole di inferenza in modalità batch può rendere più rapido il processo di generazione. I file vengono infatti forniti più velocemente al compilatore in batch dal momento che il driver del compilatore viene richiamato una sola volta. Le prestazioni del compilatore C e C++, ad esempio, sono migliori quando viene gestito un insieme di file, in quanto il compilatore può rimanere in memoria durante il processo.
Nell'esempio seguente viene illustrato l'utilizzo delle regole di inferenza in modalità batch:
# 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
Se non vengono utilizzate le regole di inferenza in modalità batch, verrà prodotto il seguente output:
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
Se, invece, vengono utilizzate le regole di inferenza in modalità batch, l'output sarà il seguente:
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...