Python Makefile中的VAR求值

Python Makefile中的VAR求值,python,bash,makefile,Python,Bash,Makefile,我想让车轮打印车轮名称 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) 这几乎可以正常工作,因为eval是在调用setup.py之前计算的,dist文件夹是空的 我尝试使用WHEEL:=$shel

我想让车轮打印车轮名称

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)
这几乎可以正常工作,因为eval是在调用setup.py之前计算的,dist文件夹是空的


我尝试使用WHEEL:=$shell查找-也命名“*.whl”,相同的结果

使用不同的目标创建文件。将命令存储在使用GNU Make的$shell变量中,对吗?使用它将运行关联的命令:

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

分配命令时需要使用=,否则使用:=将在生成过程开始时对其进行计算。

使用其他目标创建文件。将命令存储在使用GNU Make的$shell变量中,对吗?使用它将运行关联的命令:

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过程开始时使用:=对其进行计算。

将结果放入变量似乎完全是错误的

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

printf换行符看起来很古怪,但可能您喜欢虚假的空行。

将结果放入变量似乎完全是错误的

wheel:
    @rm -fr build dist
    python setup.py bdist_wheel
    @printf '\n => wheel ready %s\n\n' $$(find . -name '*.whl')
printf换行符看起来很古怪,但可能您喜欢伪空行。

在每个命令之前放置@是一种反模式。如果不想看到打印的命令,请使用make-s运行。如果创建控制盘文件后需要查找以定位控制盘文件,则需要修复生成过程。除非设置。ONESHELL:作为伪目标,配方中的每一行都单独执行。将@放在每个命令之前是反模式。如果您不想看到打印的命令,请使用make-s运行。如果您需要在创建控制盘文件后找到它,则需要修复生成过程。除非您设置。ONESHELL:作为伪目标,配方中的每一行都单独执行。