Barという変数を持つFooというmakefileがあるとしましょう。
Fooには次のものがあります。
Bar := /some/initial/path
Other_var := ${Bar}/more/paths
次に、デフォルトのmakefileでFooを使用します。
include Path/to/Foo
しかし、Barの値がFooで使用される値になるように、デフォルトのmakefileにBarをどのように設定できますか? evalを使ってみましたが、:=
本当に難しいことでした。大きな目標は、Fooのソースを変更することではありません。
答え1
私のGNU make 4.0オンライン情報によると、割り当てにoverride
キーワードを使用すると、通常はコマンドラインをオーバーライドするために使用されます。変数=値設定すると、このキーワードなしで追加の割り当てに値はoverride
変更されません。
したがって、デフォルトのmakefileで次のことを試すことができます。
override Bar := myvalueforbar
include Path/to/Foo
答え2
含める前に定義すると、Bar
列を使用できます。Foo
Makefile
Foo
たとえば、Makefile
各Pythonパッケージには次のものが含まれています(もちろん、各Makefileの最初の2行は異なります)。
UTILNAME:=yaml
PKGNAME:=ruamel.yaml
VERSION:=$(shell python setup.py --version)
include ~/.config/ruamel_util_new/Makefile.inc
共通ルーチンでMakefile.inc
配布ファイルを生成する方法を紹介します。
DIST:=dist/$(PKGNAME)-$(VERSION).tar.gz
WHL:=dist/$(PKGNAME)-$(VERSION)-py*-any.whl
$(DIST): $(SRC)
make check
python setup.py sdist