通过`make dist`复制的文件,而不是通过`make distcheck`复制的文件

问题描述

|| 在使用GNU Autotools构建的项目中,我有一个脚本,需要按ѭ0进行修改以包含安装路径。这是一个小例子: 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
Makefile.am:
SUBDirs = blah
等等/Makefile.am:
all: myscript

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

EXTRA_disT = myscript.in
./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
复制?     

解决方法

        myscript.in在发行版的tarball中,但是make distcheck会执行VPATH构建,其中的configure是从其他目录运行的。例如,代替\“ ./ configure \”,它执行的操作类似于\“ mkdir build-dir; cd build-dir; / path / to / configure; \”在Makefile.am中,您需要替换以下实例: myscript规则和依赖项行中的\“ myscript.in \”和\“ $(srcdir)/myscript.in \”