使用autotools,如何在c程序旁边的src目录中运行pandoc

时间:2018-06-07 08:19:04

标签: pandoc autotools

我正在创建一个c程序,我在src目录中使用design.md文档,因此设计接近源代码。我使用autotools,但我不知道如何让automake在c编译器旁边运行pandoc。这是我的Makefile.am

bin_PROGRAMS = brun
AM_CFLAGS = -Wall -Wextra -std=c11
AM_LDFLAGS = -rdynamic
lib_LTLIBRARIES = libbrun.la
libbrun_la_SOURCES = Object.c Box.c Module.c
libbrun_la_LDFLAGS = -version-info 0:0:0
brun_SOURCES = main.c
brun_LDADD = libbrun.la
include_HEADERS = Object.h Object.r.h Box.h Box.r.h Module.h Module.r.h
# EXTRA_DIST = Object.r Box.r Module.r
#
%.pdf: %.md
    pandoc -o $@ $<

上述代码无法生成design.md目录中的文件todo.mdsrc

我已经搜索了如何做到这一点的线索,但大多数结果都指向如何使用autotools进行编译或只包含一般教程。我一直在寻找一天左右的时间,而且我已经对显而易见的事情视而不见了。

在编译我的c源代码之后,有谁知道如何让automake运行pandoc?

1 个答案:

答案 0 :(得分:1)

您提供了一个make规则,该规则描述如何从您的.md文件中构建PDF,但您的Makefile.am并未在任何地方表达任何PDF实际上应该建立文件,更不用说那些文件了。

对于您希望安装的文件(如果您不想安装文档,为什么要构建文档)具体取决于您希望它们的位置,但是,例如,

pkgdata_DATA = design.pdf todo.pdf

这会将它们构建为make all的一部分,并在$(datadir)期间将它们安装到make install的子目录中(可能类似于/usr/local/share/brun)。

如果出于某种原因你想要构建文件,但是不是,那么你可以改为使用

noinst_DATA = design.pdf todo.pdf

无论哪种方式,因为您依赖于不同后缀的后缀规则,您可能还必须告诉Automake:

SUFFIXES = .md .pdf

请注意make识别出类似的构造,但不应在Automake中使用make的变体;相反,使用上面的变量赋值形式,Automake将处理转换make使用的形式。