我创建了一个这样的configure.ac文件:
AC_INIT() set
这样做的目的是打印configure脚本创建的每个可用环境变量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=
到现在为止还挺好.问题是:
我想扩展变量,比如${prefix}/share
- 但将所有内容传递给文件example.sh
并使用bash执行它不起作用,因为bash抱怨修改只读变量,UID
而扩展本身似乎也不起作用.
我尝试使用一个makefile
扩展工作的地方,但它抱怨字符串中的换行符,就像在上面输出行一样IFS=' causes an error message Makefile:24: *** missing separator. Stop.
有没有人知道如何获得配置输出的完全扩展版本?
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"