簡體   English   中英

必須在makefile中寫入“ force”目標

[英]Have to write a “force” target in a makefile

我有一個具有兩層依賴關系的(GNU)make文件,如下所示:

INP ?= main
DEPS ?= bibliography.bib
# md-->tex rule
%.tex: %.md $(DEPS)
    panzer  -o $@ $<

# tex-->pdf rule
%.pdf: %.tex
    latexmk $<

.PHONY: show 
show: $(INP).pdf
    showpdf $<

這可以按預期工作: 當markdown文件發生更改時 ,首先調用main.md > tex規則,然后依次調用main.md > pdfmake showmain.md (或我指定的任何其他markdown文件)創建並顯示PDF。最后是showpdf規則。

現在,我想添加一個目標force ,無論main.md的狀態如何,它都會觸發規則md- > textex- > pdfmain.md

這個答案我嘗試了

force:
    rm $(INP).pdf
    make show

但這不是很優雅,而且很脆弱。 -我懷疑必須有一種方法可以在當前的make調用中創建一個目標:

假裝規則X(此處為show )的依賴關系已過時,並相應地觸發所有操作。

什么是實現這一目標的最佳方法?

您絕對希望只使用-B標志。 .phony在這種情況下將無法正常工作。 你應該試試:

force: make -B show

那應該調用帶有標志的show target並使所有東西適當地重建自身。

[原始答案]

您可以將目標聲明為.phony ,也可以傳遞標志-B (我認為應該是--always-make簡寫--always-make )。 這應該使(gnu)忽略所有時間戳,並制作所有內容。 我更喜歡-B標志。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM