我应该如何使用 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 命令完成了解不多,但我认为上面的内容可以使用它。
我用的是优秀的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 命令完成了解不多,但我认为上面的内容可以使用它。