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

时间:2011-06-22 00:27:42

标签: 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

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的原因?

1 个答案:

答案 0 :(得分: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”实例