Файл, скопированный `make dist`, но не` make distcheck` - PullRequest
2 голосов
/ 22 июня 2011

В проекте, созданном с помощью 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; tar xvzf foobar-1.0.tar.gz; cd foobar-1.0; ./configure; make.Тем не менее, make distcheck не удается, потому что файл myscript.in отсутствует (но он успешно скопирован с make dist).

Есть идеи, почему файл myscript.in не копируется make distcheck?

1 Ответ

7 голосов
/ 22 июня 2011

myscript.in находится в дистрибутиве tarball, но make distcheck выполняет сборку VPATH, в которой configure запускается из другого каталога. например, вместо «./configure» он делает что-то похожее на «mkdir build-dir; cd build-dir; / ​​path / to / configure;» В Makefile.am вам необходимо заменить экземпляры «myscript.in» в правиле myscript и строке зависимости на «$ (srcdir) /myscript.in»

...