実際のプログラムファイルのうち、ヘッダファイル、ソースファイル、オブジェクトファイル、実行可能ファイルに分割し、ファイルを分類するために、この時間大きいです。それは別のディレクトリにそれらを入力し、通常のファイルでファイルで、この時間Makefileは、これらのファイルの一元管理を必要とするターゲットディレクトリの生産ターゲットファイル、実行可能なディレクトリに実行ファイル。
DIR_INC = ./ 含む DIR_SRC = ./ SRC DIR_OBJ = ./ OBJ DIR_BIN = ./ ビン SRC = $(ワイルドカード$ {DIR_SRC} / * .C) OBJ = $(patsubst%以下の.C、$ {DIR_OBJ} /%。 O、$(notdir $ {SRC})) TARGET =メイン BIN_TARGET = $ {DIR_BIN} / $ {TARGET} CC = GCC CFLAGS = -g -Wall -I $ {DIR_INC} $ {BIN_TARGET} $ {OBJ} $ (CC)$(OBJ)-o $ @ $ {DIR_OBJ} /%O:$ {DIR_SRC} /%C $(CC)$(CFLAGS)-c $ <-o $ @ .PHONY:クリーン クリーン。 見つける$ {} DIR_OBJ -name * .oの-execのrm -rf {}
次のように説明しました:
(1)の$ @でMakefileのシンボル、$ ^、意味$ <:
$ @をターゲットファイル表し
^は、すべての依存ファイルを表す$
$は<依存ファイルを表す
$新しいリストを表現するには、ターゲット以外の文書に依存しているの?
(2)ワイルドカード、notdir、patsubstの意味:
ワイルドカード:ワイルドカード拡張
notdir:パスの削除
patsubstを:代わりにワイルドカード
SRC = $(ワイルドカードの* .c)
このようINCなどサブディレクトリなどのサブディレクトリが存在する場合、現在のディレクトリ内のすべての.cファイルは、このように、ワイルドカード機能を追加指定し、コンパイルに等しいです:
SRC = $(ワイルドカードの* .c)$(ワイルドカード株式会社/ *。C)
gccの-oハローのhello.c -I /ホーム/ハロー/ -L /ホーム/ハロー/ libに-lworldが含まれます
上記の文章は、コンパイル時に言ったのhello.c -I /ホーム/ハロー/ヘッダファイルを見つけるために、最初のディレクトリとしての/ home /ハロー/ includeディレクトリを表現含まれ、
順序を見ると、次のとおりです。/ホーム/ハロー/含める - >は/ usr /含める - > / usr / local / includeの
-L /ホーム/ハロー/ libには、カタログファイルを見つけるために、最初のように/ホーム/ハロー/ libディレクトリを表し、
順序を見ると、次のとおりです。/ホーム/ハロー/ libに - > / libに - >は/ usr / libに - >は/ usr / local / libに
-lworld(「-static」を見libworld.aに参加するためのgccコンパイラオプションは、静的ライブラリファイルを表す場合)上記のlibパスに動的ライブラリファイルを表すlibworld.so探し