使用 autotools 如何将 pandoc 获取到 c 程序旁边的 src 目录中的 运行

With autotools how do I get pandoc to run in the src dir next to c programs

我正在创建一个 c 程序,我在 src 目录中使用 design.md 文档,因此设计接近源代码。我使用 autotools,但我不知道如何在 c 编译器旁边获取 automake 到 运行 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.mdtodo.md,它们位于 src 目录中。

我已经搜索了如何执行此操作的线索,但大多数结果指向如何使用 autotools 进行编译或仅包含一般教程。我已经搜索了一天左右,但我对显而易见的东西视而不见。

有谁知道如何将 automake 获取到 运行 pandoc,然后编译我的 c 源代码?

您提供了一个 make 规则来描述如何 从您的 .md 文件构建 PDF,但是您的 Makefile.am 没有anywhere 表示实际上应该构建任何 PDF 文件,更不用说构建哪些文件了。

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

pkgdata_DATA = design.pdf todo.pdf

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

如果出于某种原因您想要构建文件,但 未安装 ,那么您可以改用

noinst_DATA = design.pdf todo.pdf

无论哪种方式,由于您依赖于异常后缀的后缀规则,您可能还必须将它们告知 Automake:

SUFFIXES = .md .pdf

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