$ cat makefile kore: echo "1st line" ls /hoge echo "2nd line" dore: @echo "1st line" -@ls /hoge @echo "2nd line" $ make kore echo "1st line" # 今から実行するコマンドを表示 1st line # 先のコマンドの実行結果 ls /hoge ls: ファイル /hoge は存在しません *** Exit 2 Stop. # ここで処理が中断 $ make dore 1st line ls: ファイル /hoge は存在しません *** Exit 2 (ignored) 2nd line
$ cat makefile a: a.txt @echo "New a.txt" a: b.txt @echo "New a.txt" touch a b:: a.txt @echo "New a.txt" touch b b:: a.txt @echo "New b.txt" touch b $ touch b.txt $ make a Multiple rules lines for `a' # ターゲット重複エラー Too many command lines for `a' New a.txt touch a # make は指定されたターゲット以外でも、 $ touch a.txt # ソースが変更されていると、そのターゲットについて、 $ make b # アクションを実行する Multiple rules lines for `a' New a.txt touch b New b.txt touch bこれはライブラリの作成など複数の構成要素をもつターゲットに対し有効です。
prog: prog.o mylib.a ranlib mylib.a cc prog.o mylib.a -o prog mylib.a :: x.o ar ra mylib.a x.o mylib.a :: y.o ar r mylib.a y.o mylib.a :: z.o ar r mylib.a z.o x.o y.o: defs x.o : defsx cc -c -O x.c $ make cc -c -O x.c ranlib mylib.a cc prog.o mylib.a -o prog