2
我使用Rake從Markdown文件生成PDF。如果Markdown文件是filename.md
,我喜歡PDF爲filename.md.pdf
而不是filename.pdf
,以便自動完成按我喜歡的方式工作,以便清楚PDF文件的來源是什麼。Rake無法識別具有多個擴展名的規則
我有這個Rake文件,它工作正常。
MDFILES = FileList["*.md"]
PDFS = MDFILES.ext("pdf")
desc "Build PDFs of all chapters"
task :pdfs => PDFS
# Build PDFs from Markdown source
rule ".pdf" => ".md" do |t|
sh "pandoC#{t.source} -o #{t.name}"
end
如果我運行rake pdfs
或rake filename.pdf
的PDF文件生成如預期,但PDF文件被命名爲filename.pdf
。
但我想的Rake文件是這個:
MDFILES = FileList["*.md"]
PDFS = MDFILES.ext("md.pdf")
desc "Build PDFs of all chapters"
task :pdfs => PDFS
# Build PDFs from Markdown source
rule "md.pdf" => ".md" do |t|
sh "pandoC#{t.source} -o #{t.name}"
end
運行rake pdfs
或rake filename.md.pdf
返回錯誤Don't know how to build task 'filename.md.pdf'
。
如何以我想要的方式生成文件名?
順便說一句,這種類型的規則的正常工作與製作,即:
%.md.pdf : %.md
pandoc $< -o [email protected]
這真是棒極了:我通過使用不同的規則語法描述here.
嘗試這樣的事情爲您的規則解決它。感謝您指出可選的規則語法。它當然更強大,但比Make更醜陋。 – 2013-05-11 17:05:31