Нахождение $ pkgdatadir, определенного autotools из скрипта - PullRequest
4 голосов
/ 21 июня 2011

Мое приложение использует autotools для установки файлов данных, необходимых во время выполнения в $pkgdatadir. Часть приложения написана на C, а путь к каталогу данных задается следующим оператором в Makefile.am:

AM_CPPFLAGS = -DAM_DATADIR='"$(pkgdatadir)"'

Но мне также нужно иметь доступ к этому каталогу данных из различных сценариев Perl и shell. Есть ли общий подход к этой проблеме, другой вид модификации скриптов во время установки?

1 Ответ

4 голосов
/ 21 июня 2011

Эта проблема упоминается в документации autoconf, и рекомендуемое решение заключается в создании сценариев во время выполнения (перед установкой).Мне неясно, является ли это решение тем, что вы подразумеваете под «изменением сценариев во время установки», но это действительно единственное жизнеспособное решение, поскольку pkgdatadir определен только в Makefile, поэтому необходимо использовать make (если вы не хотите принятьЧрезвычайно хрупкий подход к попытке дублировать определение pkgdatadir за пределами Makefile.)

Это лучшая ссылка, которую я мог найти только сейчас: http://www.delorie.com/gnu/docs/autoconf/autoconf_24.html. В соответствующей части описывается следующий пример фрагмента makebuild autoconf и autoheader:


edit = sed \
        -e 's,@datadir[@],$(pkgdatadir),g' \
        -e 's,@prefix[@],$(prefix),g'

autoconf: Makefile $(srcdir)/autoconf.in
        rm -f autoconf autoconf.tmp
        $(edit) $(srcdir)/autoconf.in >autoconf.tmp
        chmod +x autoconf.tmp
        mv autoconf.tmp autoconf

autoheader: Makefile $(srcdir)/autoheader.in
        rm -f autoheader autoheader.tmp
        $(edit) $(srcdir)/autoconf.in >autoheader.tmp
        chmod +x autoheader.tmp
        mv autoheader.tmp autoheader
...