Makefile de amostra para PCH
O makefile a seguir usa as macros e um!SE, O!OUTRA!Estrutura de fluxo de controle de comando ENDIF para simplificar sua adaptação ao seu projeto.
# 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
Além de macros STABLEHDRS autônomo e UNSTABLEHDRS mostradas na Figura "Estrutura de um Makefile que usa um pré-compilado cabeçalho de arquivo" em PCH arquivos no processo de compilação, este makefile fornece uma macro CLFLAGS e uma macro LINKFLAGS.Você deve usar essas macros para listar o compilador e vinculador opções que se aplicam se você construir uma depuração ou versão final do arquivo executável do aplicativo.Há também uma macro com BIBLIOTECAS onde você lista as bibliotecas requer o seu projeto.
Também usa o makefile!SE, O!OUTRA!ENDIF para detectar se você define um símbolo de depuração na linha de comando NMAKE:
NMAKE DEBUG=[1|0]
Esse recurso torna possível para você usar o makefile mesmo durante o desenvolvimento e para as versões finais do seu programa — usar DEBUG = 0 para as versões finais.As linhas de comando a seguir são equivalentes:
NMAKE
NMAKE DEBUG=0
Para obter mais informações sobre makefiles, consulte Referência NMAKE.Consulte também Opções de compilador e o Opções do vinculador.