2

すべてのプロジェクトをビルドするための簡単なmakefileを作成する必要があります。これはC++コードで、gmakeを使用しています。

ディレクトリのリストがあるとしましょう。それぞれにcdして、gmakeコマンドを発行し、成功した場合は次のディレクトリに移動します。

gmakeのマニュアルを見て調理しました

.PHONY: all clean dirs $(DIRS)

dirs: $(DIRS)

$(DIRS): \n\t
    $(MAKE) -C $@

これは「すべて」のターゲットに対して機能します。gmakeと入力するだけで、正しい動作をします。しかし、gmake cleanを実行しても、何も実行されません。

私は行くにつれてgmakeを学んでいるので、私は確かにここで愚かなことをしています:)

助けてくれてありがとう。

4

1 に答える 1

8

最初のターゲット以外のものを再帰的に作成するには (すべてが最初のターゲットであると推測しています)、サブ make に何を作成するかのアイデアを与える必要があります。これは、MAKEFLAGS および MAKECMDGOALS 変数を使用して行うことができます。

例えば:

$(DIRS):
        $(MAKE) -C "$@" $(MAKEFLAGS) $(MAKECMDGOALS)

あなたのルールはクリーンなどのターゲット名を渡していませんでした。

于 2009-08-07T16:03:17.003 に答える