autotools:避免运送源生成器

时间:2013-12-19 09:43:35

标签: autotools automake

在我的项目中,我使用了一个源生成器。现在对于make dist目标我不希望最终用户需要生成器,所以我决定使用

将预生成的源文件添加到tarball
EXTRA_DIST = generated.cc

不幸的是,创建tarball中的Makefile还包含生成generated.cc的规则

generated.cc : input.txt
          scarygenerator input.txt > $(top_builddir)/generated.cc

由于input.txt不是tarball的一部分,因此执行此规则并失败。

生成tarball的Makefile时,“make dist”可能会省略此规则吗?

1 个答案:

答案 0 :(得分:3)

autotools旨在简化GPL的合规性(例如相应的来源,在这种情况下可能包括input.txtscarygenerator)。但是,由于您的项目可能不受GPL限制的约束,您可以在tarball中 not include index.txt这样做:

<强> configure.ac

AC_MSG_CHECKING([for source generation])
AS_IF([test -f index.txt], [gen_source=yes], [gen_source=no])
AC_MSG_RESULT($gen_source)
AM_CONDITIONAL([GEN_SOURCE], [test x$gen_source = xyes])

<强> Makefile.am

bin_PROGRAMS = foo
foo_SOURCES = ... generated.cc

if GEN_SOURCE

generated.cc : index.txt
    scarygenerator $< > $@
endif