make での二重コロンでの実行順
2010-09-04


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
こちらも順当な出力だった。
[FreeBSD]
[unix]
[make]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット