当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何从配置中获得完全扩展的变量?》经验,为你挑选了1个好方法。

我创建了一个这样的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.

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



1> ndim..:

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"

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有