问题描述
||
在使用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 \”