由“make dist”复制但未由“make distcheck”复制的文件
在使用 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
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 同上;焦油 xvzf foobar-1.0.tar.gz; cd foobar-1.0; ./配置;制作
。但是,make distcheck
失败,因为文件 myscript.in
丢失(但使用 make dist
已成功复制)。
任何想法为什么文件 myscript.in
没有被 make distcheck
复制?
In a project built with GNU Autotools, I have a script that needs to modified by make
to contain the installation path. Here's a small example:
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
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
successfully creates myscript
. Ditto for make dist; tar xvzf foobar-1.0.tar.gz; cd foobar-1.0; ./configure; make
. However, make distcheck
fails because the file myscript.in
is missing (but it is copied successfully with make dist
).
Any ideas why the file myscript.in
is not being copied by make distcheck
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
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”
myscript.in is in the distribution tarball, but make distcheck does a VPATH build in which configure is run from a different directory. eg, instead of "./configure", it is doing something akin to "mkdir build-dir; cd build-dir; /path/to/configure;" In Makefile.am, you need to replace instances of "myscript.in" in the myscript rule and dependency line with "$(srcdir)/myscript.in"