Создайте одно правило Makefile для нескольких файлов - PullRequest
0 голосов
/ 04 марта 2020

Я хотел бы создать только одно правило Makefile вместо того, чтобы создавать одно и то же правило для разных файлов одного типа.

Рассмотрим небольшой пример, где files объявляет две Python -Notebooks и каждую из этих Записных книжек должны быть преобразованы в Python -скрипт (.py). Это можно сделать с помощью команды jupyter nbconvert --to script FILE. Makefile, который я пытался создать, выглядит следующим образом, но не работает:

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 $<

1 Ответ

1 голос
/ 04 марта 2020

Вот для чего правила шаблона :

all: A.py B.py

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

Вы также можете использовать stati c правила шаблона , которые некоторые предпочитают.

...