1

これは私が Makefile でやろうとしていることです:

MAKE_381 := $(TOOLS)/bin/make-381

default:
    cd proj && $(MAKE_381)

MAKE_381make v3.81バイナリのバージョンを指します。これは、projディレクトリにMakefiles互換性があるもののみが含まれv3.81、新しいものも古いものもないため、必要です。

この Makefile を常に使用して、開発者がシステムにインストールした GNU make のバージョンとは無関係make v3.81にビルドする必要があります。proj

呼び出しMAKE_381は機能しますが、1 つの注意点があります。並列ジョブの数などの追加パラメーターは に渡されませんMAKE_381。この情報を抽出する方法に関するドキュメントは見つかりませんでした。

MAKEFLAGSコマンドラインからmakeに渡される追加のパラメーターを含める必要があるGNU makeの変数を認識していますが、どういうわけかこの値が空であることがわかりました。

に渡されるジョブの数をハードコーディングしたくありません。代わりに、最初に呼び出さMAKE_381れたものに基づいてパラメータを渡す必要があります。Makefile

4

1 に答える 1

2

コマンド ラインの先頭に+文字を付けるだけで、make は別のサブ make プロセスを呼び出していることを認識できます。

default:
        + cd proj && $(MAKE_381)

コマンドが変数MAKEを直接使用した場合、これは自動的に行われますが、別の変数名 ( MAKE_381) を使用しているため、明示的に行う必要があります。

于 2013-02-26T13:35:08.623 に答える