如何从配置中获得完全扩展的变量?

时间:2009-09-17 19:27:03

标签: variables autoconf configure expand

我创建了一个这样的configure.ac文件:

AC_INIT()
set

这样做的目的是打印配置脚本使用set创建的每个可用环境变量,所以我这样做:

user@host:~$ autoconf
user@host:~$ ./configure

打印一堆变量,如

build=
cache_file=/dev/null
IFS='   
'
LANG=C
LANGUAGE=C
datarootdir='${prefix}/share'
mandir='${datarootdir}/man'
no_create=

到目前为止一切顺利。 问题是:

  1. 我想扩展像${prefix}/share这样的变量 - 但是要管道 文件example.sh的所有内容并使用bash执行它不起作用,因为bash抱怨修改只有UID之类的只读变量,而扩展本身似乎也不起作用。
  2. 我尝试使用makefile进行扩展工作,但它会抱怨字符串中的换行符,就像上面输出的行IFS=' causes an error message Makefile:24: *** missing separator. Stop.
  3. 一样

    有没有人知道如何获得配置输出的完全扩展版本?

1 个答案:

答案 0 :(得分:6)

Autoconf手册(我无法回想起或找到确切的位置)建议在Makefile.in(或.am,如果您碰巧使用Automake)中“手动”进行这种变量替换:

Makefile.in

[...]
foo.sh: foo.sh.in
        $(SED) \
            -e 's|[@]prefix@|$(prefix)|g' \
            -e 's|[@]exec_prefix@|$(exec_prefix)|g' \
            -e 's|[@]bindir@|$(bindir)|g' \
            -e 's|[@]datarootdir@|$(datarootdir)|g' \
            < "$<" > "$@"
[...]

foo.sh.in

#!/bin/sh
datarootdir=@datarootdir@
du "$datarootdir"