为多个文件创建一个Makefile规则

问题描述 投票:0回答:1

我只想创建一个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 $<
makefile gnu-make
1个回答
0
投票

这是pattern rules的用途:

all: A.py B.py

%.py: %.ipynb
        jupyter nbconvert --to script $<

您也可以使用某些人喜欢的static pattern rules

© www.soinside.com 2019 - 2024. All rights reserved.