由“make dist”复制但未由“make distcheck”复制的文件

发布于 2024-11-17 01:35:38 字数 924 浏览 4 评论 0原文

在使用 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 成功创建 myscriptmake 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

就像说晚安 2024-11-24 01:35:38

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"

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文