我应该如何使用 make 来允许我 运行 目录中的所有 python 脚本?

How should I use make to allow me to run all python scripts in a directory?

我用的是优秀的Makefile.venv

https://github.com/sio/Makefile.venv

处理 python 虚拟环境的各个方面。

为了运行我的hello world程序,我有一个目标:

hello: venv
    $(VENV)/python hello.py

请注意,它取决于 venv(哪个目标正确设置了虚拟环境),但不取决于 hello.py,因为那只是我希望 运行 的脚本,当我输入 'make hello',无论文件最近是否更新,我都希望发生这种情况。

这很完美,但我已经开始积累这样的规则,例如:

hello-pyparsing: venv
    $(VENV)/python hello-pyparsing.py

generators: venv
    $(VENV)/python generators.py

我应该如何抽象通用模式来说明目录中的任何 .py 文件都是可能的目标?

如果 bash 命令完成有效,即加分,即 make <Tab> 给我一个像 hello, hello-pyparsing, generators 这样的列表供我选择!

足够简单:

ALLPYS := $(patsubst %.py,%,$(wildcard *.py))

$(ALLPYS): venv
        $(VENV)/python $@.py

.PHONY: $(ALLPYS)

我对 makefile 的 bash 命令完成了解不多,但我认为上面的内容可以使用它。