と の両方を$(MAKEFLAGS)
使用してシェルからの呼び出しをサポートする方法で (またはコマンドラインで定義された変数をサブ make に渡す別の方法で)使用するにはどうすればよいですか?make VAR=val
make -args
サブプロジェクトを構成可能にする必要がありますが、自動ツールが嫌いなので、シェルから呼び出すなど、make 変数を使用しています。
$ make USE_SSE3=1
USE_SSE3
すべてのサブ makefile のすべてのビルドに適用する必要があります。
マニュアルには次のように記載されています。
「make -ks」を実行すると、MAKEFLAGS は値「ks」を取得します。
したがって-$(MAKEFLAGS)
、私は Makefile で (ダッシュ プレフィックスを付けて) を使用しています。
ただし、フラグのない変数を使用すると、無効な引数に展開されます。私が実行した場合:
$ make FOO=bar
その後、サブメイクは無効になります-FOO=bar
。ダッシュ接頭辞変数定義のない OTOH は機能しますがmake -s
、 などは機能しません。
引数の受け渡しと単独の変数定義をサブメイクファイルで機能させる構文/変数/ハックはありますか?
レガシー$(MKFLAGS)
には奇妙なダッシュ接頭辞の問題はありませんが、変数定義も含まれていません。で変数を修正しようとしました$(patsubst)
が、空白をトリミングすることで事態が悪化しただけです。
Mac OS X Mavericks に同梱されている古い GNU Make 3.81 と互換性のあるソリューションが必要です。
foo:
$(MAKE) -C subproject -$(MAKEFLAGS)
$ make foo -s # MAKEFLAGS = 's'
$ make foo BAR=baz # MAKEFLAGS = 'BAR=baz'
$ make foo -j8 # MAKEFLAGS = ' --job-server=…'