make での二重コロンでの実行順2010年09月04日 13時59分37秒

make では二重コロンを使ってターゲットを記述すると、同じターゲットを複数回記述できるようになる。一つのファイルのみの make ファイルであれば、そんなに使う機会も無いが、複数のファイルを作成し include するようになってくると重宝する場面が増えてくる。

複数のターゲットを書いた時に気になるのは実行順だ。GNU Make と BSD Make で簡単に実験をした。なお、今回の実行環境は FreeBSD なので、gmake は GNU Make、make が BSD Make になる。

まず、all と言うターゲットを持つファイルを三つ準備した。これを include して実行する。


% head ?.mk
==> 1.mk <==
all ::
        echo 1

==> 2.mk <==
all ::
        echo 2

==> 3.mk <==
all ::
        echo 3

まずは、順番に読む 123.mk を作り、実行する。


% cat 123.mk
include 1.mk
include 2.mk
include 3.mk
% gmake -f 123.mk
echo 1
1
echo 2
2
echo 3
3
% make -f 123.mk
echo 1
1
echo 2
2
echo 3
3

読み込まれた順番に実行されている。

今度は、順番を変えてみる。今度は 213 の順だ。


% cat 213.mk
include 2.mk
include 1.mk
include 3.mk
% gmake -f 213.mk
echo 2
2
echo 1
1
echo 3
3
% make -f 213.mk
echo 2
2
echo 1
1
echo 3
3

こちらも読み込んだ順番通り。

最後に複数回読み込んでみる。


% cat 2131.mk
include 2.mk
include 1.mk
include 3.mk
include 1.mk
% gmake -f 2131.mk
echo 2
2
echo 1
1
echo 3
3
echo 1
1
% make -f 2131.mk
echo 2
2
echo 1
1
echo 3
3
echo 1
1

こちらも順当な出力だった。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2010/09/04/5329742/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。