Makefileのデバッグ
- 2011/06/27(月) 03:15:14
HOGE = hogege
$(info hoge $(HOGE))
$(warning hoge- $(HOGE))
hoge hogege
Makefile:6: hoge- hogege
複雑なMakefileがどう動いてるのかみるのに便利
eclipseのxmlエディタが壊れた他
- 2011/06/22(水) 16:14:04
プロンプトで eclipse.exe -clean %*
「R cannot be resolved」エラーが表示されている場合、
「Project」メニュー、「Clean」を実行し、(自動)ビルドすると、R.javaファイルを再作成できます。
「The type R is already defined」エラーの場合も、R.javaファイルを手動で削除すればOKです。
Makefileにおける変数への値格納・代入
- 2011/06/21(火) 01:01:08
"=" コマンドで展開された時に参照が展開される 再帰展開変数
":=" 変数が定義された時にできたものを値として格納 単純展開変数
"?=" まだ定義されていない場合だけ効果がある 再帰展開変数
foo = $(bar)
bar = $(ugh)
ugh = Huh?
all:;echo $(foo)
Huh?
x := foo
y := $(x) bar
x := later
は、次のものと同等です。
y := foo bar
x := later
FOO ?= bar
↑↓同じ意味になります
ifeq ($(origin FOO), undefined)
FOO = bar
endif
makeの主要な自動変数
- 2011/06/20(月) 22:42:06
マクロの展開
$@
いま、実行しようとしている生成コマンドの中で、 「それが生成しようとしているターゲット名」に展開される。
$<
いま、実行しようとしている生成コマンドの中で、そのターゲットが 依存しているファイルのひとつに展開される。 この変数はおもにサフィックスルールの 生成コマンドで使われる。
$*
ターゲット名からサフィックスを除いたものに展開される。
$?
依存ファイルで更新されたもののリストに展開される。
$%
ライブラリの構成指定中の要素を表します
$^
すべての必須項目をスペースで区切ったリストを表します。コンパイラやファイルのコピーなど
項目重視が望ましくない場合のために。重複したファイルはリストから取り除かれます。
$+
$^と同様にすべての必須項目をスペースで区切ったリストを表しますが、重複を含みます。こ
れは重複した値に意味があるリンカへの指定などといった指定の用途のために用意されました。
$($(マクロ名))
マクロを 2段階に展開する。
$(マクロ名:文字列1=文字列2)
文字列置換つきマクロ。 マクロを展開するとき、文字列1 を 文字列2 に置換する。
OBJS = sub1.o sub2.o sub3.o
ここで、
$(OBJS:.o=.c) → sub1.c sub2.c sub3.c
$(マクロ名/*/文字列1&文字列2)
文字列追加つきマクロ。 マクロを展開するとき、その展開結果に文字列1と 文字列2を追加する :
NAMES = aaa bbb ccc
ここで、
$(NAMES/*/sub_&.c) → sub_aaa.c sub_bbb.c sub_ccc.c
$(マクロ名/^/文字列)
文字列追加つきマクロ。 マクロを展開するとき、その先頭に文字列を追加する :
NAMES = aaa.c bbb.c ccc.c
ここで、
$(NAMES/^/sub_) → sub_aaa.c sub_bbb.c sub_ccc.c
$(マクロ名/$/文字列)
文字列追加つきマクロ。 マクロを展開するとき、その末尾に文字列を追加する :
NAMES = sub_aaa sub_bbb sub_ccc
ここで、
$(NAMES/$/.c) → sub_aaa.c sub_bbb.c sub_ccc.c
$(マクロ名?文字列1:文字列2)
条件分岐マクロ。 指定したマクロがすでに定義されていれば文字列1 を、 未定義ならば文字列 2 を展開する。
make の実行オプション
- 2011/06/20(月) 22:26:05
make の実行オプション
Make の実行オプションは普通シェルから指定するが、環境変数 MFLAGS でも指定できる。
これは多段 makeで、親 make が実行オプションをその子 make に継承するために使う。
-f ファイル名
“Makefile”の代わりに別のファイル名を使う。“-”は標準入力。 また、Makefile 内から別の Makefile を取り込んだりする場合には、 サーチパスが設定できる。
マクロ VPATH は依存ファイルをサーチするパスのリストである。 「:」 で区切って書く。
-n
実行すべき生成コマンド列の表示のみを行い、実際には実行しない。 これは、ある Makefile がどんなことをするのか、前もって 予想したいときに有効。
-s
make は生成コマンドを実行するときに、それを マクロ展開した状態で逐一表示しながら実行する。
このオプションは、実行するコマンドをいちいち表示させないようにする。
-k
make は、生成コマンドを実行したときに、そこでエラーが発生すれば それ以降の生成を中止し、終了する。
このオプションをつけると make は 生成コマンドでエラーが発生しても無視して、最後まで規則をやり通す。
-p
make であらかじめ定義されている規則・マクロをすべて展開し表示する。
-t
生成コマンドを何も実行せず、指定されたターゲットを touch する。
-e
make 内で定義されたマクロよりも環境変数の値を優先する。


