• 締切済み

Makefileについて質問です。あるMakefileをのぞいてみたら

Makefileについて質問です。あるMakefileをのぞいてみたら↓のように(一部ですが)書いてあったのですが、 どういう事をしているのかよく分かりません。 もしよろしければこの部分がどのような事をしているのか教えて頂けますでしょうか? all:; @if [ x$(ARCH) = x ]; then \ echo "Missing environmnet value ARCH"; \ exit; \ else \ for dir in $(SUBDIRS) ; do \ echo working at $$dir; \ (set +x; cd $$dir; $(MAKE) $(MFLAGS) $@ ); \ done; \ fi \は¥で置き換えてください

みんなの回答

回答No.1

Makefileというよりは、Makefileの中に書かれたシェルスクリプトですね。やっていることは「そのMakefileが置いてあるディレクトリの、全サブディレクトリの中でmakeを実行する」という処理です。ちょっとわかりにくいので例を挙げましょう。 たとえば: aaa/   Makefile   bbb/     Makefile   ccc/     Makefile このようなディレクトリ構造があったとして、aaa/の中で"make"を実行したとします。すると、サブディレクトリはbbb/とccc/のふたつが存在しますから、それぞれの中に入って更に"make"を実行しているということです。 ちなみに、スクリプトの中で$(SUBDIRS)という変数はサブディレクトリの一覧に展開されるというお約束になっています。$(ARCH)などと書いてあるあたりは単なるエラーチェックなので気にしなくて良いです。

yamaomoto
質問者

お礼

返答遅れて申し訳ありませんでした。 おかげで謎が解決できました。また、よろしくお願いします

関連するQ&A

専門家に質問してみよう