Bah, ich verbringe die ganze Zeit damit, eine andere Antwort zu schreiben und es stellt sich heraus, dass ich dein Problem falsch interpretiert habe, oops.
Sie sagen, dass Sie erwarten, dass jupyter
ausgeführt wird, wenn Sie barline.svg berühren.
Verwenden Sie die Dateizeitstempel, um festzustellen, wann sie ausgeführt werden soll. Die Regel für nicht-falsche Ziele ist einfach: Wenn eine der Voraussetzungen neuer als das Ziel ist oder das Ziel nicht existiert, wird das Ziel neu erstellt. Ansonsten ist es nicht. In Ihrem Fall:
docs/img/barline.svg: docs/notebooks/barlines.ipynb docs/data/smbinning
die svg Berühren werden die Bedingungen für diese Regel nicht einhalten, da es das Ziel ist.
Make wird nur ausgeführt, wenn barlines.ipynb oder smbinning neuer als barline.svg ist. Also Ihre Erwartungen sind aus, berühren barline.svg wird nichts tun, außer möglicherweise verursachen Ziele, die es als Voraussetzung, um selbst wieder aufgebaut werden.
Dazu müssten Sie barlines.ipynb oder smbinning berühren. Das macht sie neuer als barlines.svg und zwingt sie zum Neuaufbau. Oder du kannst einfach barlines.svg löschen, wie du herausgefunden hast.
Make erstellt keine Build-Zeitstempel an einem speziellen Ort woanders. Alle Informationen stammen aus dem Dateisystem. Wenn Sie also ein Ziel berühren, hat es nicht wirklich etwas zu sagen: "Hey, jemand hat das Ziel geändert Vielleicht sollte ich es neu aufbauen "(und aus anderen Gründen würde man dieses Verhalten sowieso nicht wollen).
Wenn Sie 'docs/img/barline.svg' berühren, wird' cd docs; mache html'. Versuchen Sie, 'docs/notebooks/barlines.ipynb' zu berühren, Ihr jupyter-Befehl wird ausgegeben. –
Oh Jean-François. Dies kann ein Zeichen für eine Pause vom Computer sein. Vielen Dank. Klar, so soll es sein. – Xiphias