Makefile de amostra para PCH
O makefile a seguir usa as macros e um!SE, O!ELSE!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 a "Estrutura de um Makefile que usa um pré-compilado cabeçalho de arquivo" em PCH de 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ê listar as bibliotecas do projeto requer.
Também usa o makefile!SE, O!ELSE!ENDIF para detectar se você definir 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 — use 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 NMAKE referência. Consulte também Opções de compilador e o Opções do vinculador.