覆盖另一个 makefile 中的 :=

覆盖另一个 makefile 中的 :=

假设我有一个名为 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包含之前定义,则该栏可在 中使用。FooMakefileFoo

例如,我的每个MakefilePython 包中都有以下内容(当然,每个 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

相关内容