この小さな Makefile を検討してください。
test: var ?= foo
test:
echo $(var)
make のドキュメントには、?=
以前に割り当てられていない (未定義) 変数を割り当てると書かれています。ただし、コマンドライン経由で割り当てた場合:
make var=1234
の代わりに、いくつかのランダムな (ASCII、非 ASCII、空白のみ) 文字1234
が端末に出力されます。=
代わりに使用する?=
と期待どおりに機能しますが、呼び出し元の make からエクスポートされた割り当てを「継承」してオーバーライドするため、私の場合は使用できません。また、ターゲットベースではなくグローバルな割り当てを使用しない場合、出力は期待どおりです。これらの文字シーケンスはどこから来たのですか?
Linux gentoo (GNU make v3.82) および deb-wheezy (GNU make v3.81) でテスト済み。
ヒントをありがとう!