文件由`make dist`复制,但不是由'make distcheck`复制

Leo*_*Leo 2 autotools

在使用GNU Autotools构建的项目中,我有一个需要修改的脚本make来包含安装路径.这是一个小例子:

configure.ac:

AC_INIT(foobar, 1.0)
AC_PREREQ(2.66)
AC_CONFIG_HEADERS(config.h)
AM_INIT_AUTOMAKE(foreign)
AC_CONFIG_FILES([Makefile blah/Makefile])
AC_OUTPUT
Run Code Online (Sandbox Code Playgroud)

Makefile.am:

SUBDIRS = blah
Run Code Online (Sandbox Code Playgroud)

胡说/ Makefile.am:

all: myscript

myscript: myscript.in
        sed -e 's,@datadir\@,$(pkgdatadir),g' myscript.in > myscript
        chmod +x myscript

EXTRA_DIST = myscript.in
Run Code Online (Sandbox Code Playgroud)

./configure; make成功创造myscript.同上make dist; tar xvzf foobar-1.0.tar.gz; cd foobar-1.0; ./configure; make.但是,make distcheck因为文件myscript.in丢失而失败(但成功复制了make dist).

任何想法为什么文件myscript.in没有被复制make distcheck

Wil*_*ell 7

myscript.in在分发tarball中,但make distcheck执行VPATH构建,其中configure从不同的目录运行.例如,它代替"./configure",它做的事情类似于"mkdir build-dir; cd build-dir;/path/to/configure;" 在Makefile.am中,您需要使用"$(srcdir)/myscript.in"替换myscript规则和依赖行中的"myscript.in"实例.