Condividi tramite


Makefile di esempio per PCH

Aggiornamento: novembre 2007

Il makefile illustrato di seguito utilizza macro e una struttura di comando del flusso di controllo del tipo !IF, !ELSE, !ENDIF che semplifica l'adattamento al progetto.

# Makefile : Illustrates the effective use of precompiled
#            headers in a project
# Usage:     NMAKE option
# option:    DEBUG=[0|1]
#            (DEBUG not defined is equivalent to DEBUG=0)
OBJS = myapp.obj applib.obj
# List all stable header files in the STABLEHDRS macro.
STABLEHDRS = stable.h another.h
# List the final header file to be precompiled here:
BOUNDRY = stable.h
# List header files under development here:
UNSTABLEHDRS = unstable.h
# List all compiler options common to both debug and final
# versions of your code here:
CLFLAGS = /c /W3
# List all linker options common to both debug and final
# versions of your code here:
LINKFLAGS = /NOD /ONERROR:NOEXE
!IF "$(DEBUG)" == "1"
CLFLAGS   = /D_DEBUG $(CLFLAGS) /Od /Zi /f
LINKFLAGS = $(LINKFLAGS) /COD
LIBS      = slibce
!ELSE
CLFLAGS   = $(CLFLAGS) /Oselg /Gs
LINKFLAGS = $(LINKFLAGS)
LIBS      = slibce
!ENDIF
myapp.exe: $(OBJS)
    link $(LINKFLAGS) @<<
$(OBJS), myapp, NUL, $(LIBS), NUL;
<<
# Compile myapp
myapp.obj  : myapp.cpp $(UNSTABLEHDRS)  stable.pch
    $(CPP) $(CLFLAGS) /Yu$(BOUNDRY)    myapp.cpp
# Compile applib
applib.obj : applib.cpp $(UNSTABLEHDRS) stable.pch
    $(CPP) $(CLFLAGS) /Yu$(BOUNDRY)    applib.cpp
# Compile headers
stable.pch : $(STABLEHDRS)
    $(CPP) $(CLFLAGS) /Yc$(BOUNDRY)    applib.cpp myapp.cpp

Oltre alle macro STABLEHDRS, BOUNDRY e UNSTABLEHDRS, mostrate nella figura "Struttura di un makefile che utilizza un file di intestazione precompilato" in File PCH nel processo di generazione, questo makefile contiene due macro: CLFLAGS e LINKFLAGS. Utilizzare queste macro per elencare le opzioni di compilazione e dei linker da utilizzare se si genera una versione di debug o finale del file eseguibile dell'applicazione. Esiste inoltre una macro LIBS in cui elencare le librerie necessarie al progetto.

Il makefile utilizza la struttura !IF, !ELSE, !ENDIF per rilevare la definizione di un simbolo DEBUG nella riga di comando NMAKE:

NMAKE DEBUG=[1|0]

Questa caratteristica consente di utilizzare lo stesso makefile durante lo sviluppo e per le versioni finali del programma: utilizzare DEBUG=0 per le versioni finali. Le seguenti righe di comando sono equivalenti:

NMAKE 
NMAKE DEBUG=0

Per ulteriori informazioni sui makefile, vedere Riferimenti di NMAKE. Vedere inoltre Opzioni del compilatore e Opzioni dei linker.

Vedere anche

Riferimenti

Utilizzo di intestazioni precompilate in un progetto