我只想创建一个Makefile规则,而不是为相同类型的不同文件创建相同的规则。
[考虑这个小示例,其中files
声明两个Python笔记本,并且每个笔记本都应转换为Python脚本(.py
)。这可以通过命令jupyter nbconvert --to script FILE
完成。我尝试创建的Makefile如下所示,但not正常工作:
files = A.ipynb B.ipynb
all: convert
convert: $(files)
jupyter nbconvert --to script $< # How to define $< as the changed file?
现在,每当更改A.ipynb
时,我都想要命令
jupyter nbconvert --to script A.ipynb
将被执行。是否可以在上述“建议”的一个简单规则内完成?我可以编写一个Makefile来完成任务,但是它会更长,并且会随着files
的大小而缩放:
all: A.py B.py
A.py: A.ipynb
jupyter nbconvert --to script $<
B.py: B.ipynb
jupyter nbconvert --to script $<
这是pattern rules的用途:
all: A.py B.py
%.py: %.ipynb
jupyter nbconvert --to script $<
您也可以使用某些人喜欢的static pattern rules。