次の方法で共有


PCH のサンプル メイクファイル

次のメイクファイルは、マクロと !IF, !ELSE, !ENDIF フロー制御コマンド構造を使用して、実際のプロジェクトに簡単に応用できるようにしています。

# 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

このメイクファイルでは、「ビルド プロセスでの PCH ファイル」の図「プリコンパイル済みヘッダー ファイルを使用するメイクファイルの構造」で示されている STABLEHDRS、BOUNDRY、および UNSTABLEHDRS の各マクロのほかに、CLFLAGS マクロと LINKFLAGS マクロが使用されています。これらのマクロを使用して、適用するコンパイラ オプションとリンカー オプションを指定する必要があります。これは、ビルドするアプリケーションの実行可能ファイルがデバッグ バージョンであるか、最終バージョンであるかには関係ありません。また、LIBS マクロも使用されています。このマクロには、プロジェクトに必要なライブラリを指定します。

また、このメイクファイルでは !IF、!ELSE、!ENDIF を使用して、NMAKE コマンド ラインに DEBUG シンボルを定義するかどうかを判定しています。

NMAKE DEBUG=[1|0]

この機能により、開発中のプログラムと最終バージョンのプログラムに同じメイクファイルを使用できます。最終バージョンには、DEBUG=0 を使用します。次の 2 つのコマンド ラインは、等価です。

NMAKE 
NMAKE DEBUG=0

メイクファイルの詳細については、「NMAKE リファレンス」を参照してください。また、「コンパイラ オプション」と「リンカー オプション」も参照してください。

参照

関連項目

プロジェクトでのプリコンパイル済みヘッダーの使用