一歩ずつ学んでmakefile(三)-暗黙のルールを書きます.
一歩ずつ学んでmakefileを書きます.
ブログ:http://blog.csdn.net/jiangfriend
時間:2007-6-27 18:28
特殊な変数を学ぶ前に、隠しルールを勉強しなければなりません.隠しルールは、入力データに対してmakeによって生成されるデフォルト動作として理解され得る.
前のミッションを振り返ってみます.
ハ任务二的makefile
hello:hello.o func.o
gcc hello.o func.o-o hello
ハロー.o:hello.c
gcc-c hello.c-o hello.o
func.o:func.cfunc.h
gcc-c func.c-o func.o
隠しルールを使う場合は、このmakefileを書き換えます.
菗使用潜规则的makefile
PROC=ハロー
CC=gcc
OBJECTS=hello.o func.o
ドル(PROC):$(OBJECTS)
または
PROC=ハロー
CC=gcc
OBJECTS=func.o
ドル(PROC):$(OBJECTS)
一気にかなり簡略化されました.メークはメークです.専門です.
出力を見ると一気に書き上げられます.
gcc -c-o hello.o hello.c
gcc -c-o func.o func.c
gcc ハロー.o func.o -o hello
makeの理解過程を分析します.
ハローを生成するにはハロー.oとfunc.oが必要です.
%.oが存在しない場合は%cを探して実行します.
$(CC)-c$(CPPFLAGS)$(CFLAGS)をコンパイルします.
すべてのobjectが生成されたら実行します.
ドル(CC) $(LDFLAGS)
ドル(LOADLIBES) $(LDLIBS)リンク生成項目の最終目標ハロー
私たちは変数書、C、CFLAGSなどの変数だけを設定します.残りはmakeに任せます.
ここではよく使われる変数をいくつか挙げます.
名前
説明
デフォルト
C++パラメータ
リンクパラメータ
条件
処理プロセス
%.o<-%c.
ドル(CC)-cドル(CPPFLAGS)$
%.o<-%C.1 pp、%cc
ドル(CXX)-cドル(CPPFLAGS)$
拡張子なし<-必要なオブジェクト
ドル(CC) $(LDFLAGS)$ $(LDLIBS)
より詳細な説明を参照してください.http://www.gnu.org/software/make/manual/make.html#Using-Implicit
もちろん処理過程は再定義できますが、再定義する前に特殊変数を使うことを覚えます.
ブログ:http://blog.csdn.net/jiangfriend
時間:2007-6-27 18:28
特殊な変数を学ぶ前に、隠しルールを勉強しなければなりません.隠しルールは、入力データに対してmakeによって生成されるデフォルト動作として理解され得る.
前のミッションを振り返ってみます.
ハ任务二的makefile
hello:hello.o func.o
gcc hello.o func.o-o hello
ハロー.o:hello.c
gcc-c hello.c-o hello.o
func.o:func.cfunc.h
gcc-c func.c-o func.o
隠しルールを使う場合は、このmakefileを書き換えます.
菗使用潜规则的makefile
PROC=ハロー
CC=gcc
OBJECTS=hello.o func.o
ドル(PROC):$(OBJECTS)
または
PROC=ハロー
CC=gcc
OBJECTS=func.o
ドル(PROC):$(OBJECTS)
一気にかなり簡略化されました.メークはメークです.専門です.
出力を見ると一気に書き上げられます.
gcc -c-o hello.o hello.c
gcc -c-o func.o func.c
gcc ハロー.o func.o -o hello
makeの理解過程を分析します.
ハローを生成するにはハロー.oとfunc.oが必要です.
%.oが存在しない場合は%cを探して実行します.
$(CC)-c$(CPPFLAGS)$(CFLAGS)をコンパイルします.
すべてのobjectが生成されたら実行します.
ドル(CC) $(LDFLAGS)
ドル(LOADLIBES) $(LDLIBS)リンク生成項目の最終目標ハロー
私たちは変数書、C、CFLAGSなどの変数だけを設定します.残りはmakeに任せます.
ここではよく使われる変数をいくつか挙げます.
名前
説明
デフォルト
CC
C
cc
CFLAGS
C
CXX
C++
g++
CXXXX FLAGSC++パラメータ
CPP
C ,
$(CC) -E
CPPFLAGS
AR
ar
ARFLAGS
AR
LDFLAGSリンクパラメータ
条件
処理プロセス
%.o<-%c.
ドル(CC)-cドル(CPPFLAGS)$
%.o<-%C.1 pp、%cc
ドル(CXX)-cドル(CPPFLAGS)$
拡張子なし<-必要なオブジェクト
ドル(CC) $(LDFLAGS)$ $(LDLIBS)
より詳細な説明を参照してください.http://www.gnu.org/software/make/manual/make.html#Using-Implicit
もちろん処理過程は再定義できますが、再定義する前に特殊変数を使うことを覚えます.