Makefile中的VAR评估

时间:2017-03-19 16:20:53

标签: python bash makefile

我希望make wheel打印滚轮名称

cat Makefile
wheel:
    @rm -fr build dist
    @python setup.py bdist_wheel
    $(eval WHEEL=$(shell find . -name '*.whl'))
    @printf '\n => wheel ready %s\n\n' $(WHEEL)

几乎有效,因为在调用setup.py之前评估eval dist文件夹为空。

我也试过了WHEEL:=$(shell find . -name '*.whl'),同样的结果

2 个答案:

答案 0 :(得分:1)

使用其他目标来创建文件。将命令存储在带有$(shell)的变量中(您正在使用GNU Make,对吗?),使用它将运行相关命令:

WHEEL = $(shell find . -name '*.whl')

wheel: create_wheel
    printf '\n => wheel ready %s\n\n' $(WHEEL)

create_wheel:
    @rm -fr build dist
    @python setup.py bdist_wheel

分配命令时需要使用=,否则(使用:=)将在make过程开始时对其进行评估。

答案 1 :(得分:1)

将结果置于变量中似乎完全错误。

wheel:
    @rm -fr build dist
    python setup.py bdist_wheel
    @printf '\n => wheel ready %s\n\n' $$(find . -name '*.whl')

printf新行看起来很古怪,但也许你喜欢虚假的空行。