作出不予建设点文件的PDF之前

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

我有我的项目当前文件夹结构

.
├── Makefile
└── S6
    ├── CD_CS304.md
    ├── CN_CS306.md
    ├── DAA_CS302.md
    └── graphviz
        └── cs304_compilerphases.dot

2 directories, 5 files

我建立了每一个降价文件单独的PDF文件,这里是我的Makefile

# Generate PDFs from the Markdown source files
#
# In order to use this makefile, you need some tools:
# - GNU make
# - Pandoc

# All markdown files are considered sources
MD_SOURCES := $(wildcard **/*.md)
OUTPUT_PDFS := $(MD_SOURCES:.md=.pdf)
DOT_SOURCES := $(wildcard **/*.dot)
OUTPUT_DOTPNGS := $(DOT_SOURCES:.dot=.png)

all: $(OUTPUT_DOTPNGS) $(OUTPUT_PDFS) 

# Recipe for building png files from dot files
%.png: %.dot
    dot \
        -Tpng $< \
        -o $@

# Recipe for converting a Markdown file into PDF using Pandoc
%.pdf: %.md
    pandoc \
        --variable fontsize=12pt \
        --variable date:"\today" \
        --variable geometry:a4paper \
        --variable documentclass:book \
        --table-of-contents \
        --number-sections \
        --filter pandoc-fignos \
        -f markdown  $< \
        -o $@


.PHONY : clean

clean: $(OUTPUT_PDFS) $(OUTPUT_DOTPNGS)
    $(RM) $^

我想点程序的输出嵌入到PDF乳胶的,但这里的Makefile文件不会使点文件转换成PNG和直接进入编制的PDF格式。

这使得PDF编译运行到错误的PNG文件不存在。

makefile latex
1个回答
1
投票

如果你想确保一个文件之前,另一个文件建,添加一个依赖。

更改此:

%.pdf: %.md

为此:

%.pdf: %.md $(OUTPUT_DOTPNGS)

这种依赖性说,“不要建立这个PDF文件,除非你已经建立的每个png文件。”

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