假设我有一个名为 Foo 的 makefile,它有一个名为 Bar 的变量。
在 Foo 我有:
Bar := /some/initial/path
Other_var := ${Bar}/more/paths
然后在我的主 makefile 中我使用 Foo
include Path/to/Foo
但是我怎样才能在我的主 makefile 中设置 Bar 并使 Bar 的值成为 Foo 中使用的值呢?我尝试使用 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 的前两行有所不同):
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