如何从配置中获取完全扩展的变量?
我创建了一个像这样的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=
到目前为止好的。 问题是:
- 我想扩展像
${prefix}/share
这样的变量 - 但是管道 将所有内容写入文件example.sh
并使用 bash 执行它不起作用,因为 bash 抱怨修改诸如UID
之类的只读变量,而扩展本身似乎并不适用工作也可以。 - 我尝试使用
makefile
进行扩展,但它抱怨字符串中的换行符,就像上面的输出中的行IFS=' 导致错误消息 Makefile:24: ***缺少分隔符。停止。
有谁知道如何获得配置输出的完全扩展版本吗?
I created a configure.ac file like this:
AC_INIT()
set
the purpose of this is to print every available environment variable the configure script creates using set
, so I do this:
user@host:~$ autoconf
user@host:~$ ./configure
which prints a bunch of variables like
build=
cache_file=/dev/null
IFS='
'
LANG=C
LANGUAGE=C
datarootdir='${prefix}/share'
mandir='${datarootdir}/man'
no_create=
So far so good.
The problem is:
- I want to expand the variables like
${prefix}/share
- but piping
everything to a fileexample.sh
and executing it using bash doesn't work, because bash complains about modifying read-only variables likeUID
and expansion itself doesn't seem to work either. - I tried using a
makefile
for this where expansion works, but it complains about newlines in strings, like in the above output the lineIFS=' causes an error message Makefile:24: *** missing separator. Stop.
Does anyone have an idea how to get a fully expanded version of configure's output?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Autoconf 手册(我记不起或找不到确切位置)建议从 Makefile.in(如果您碰巧使用 Automake,则为 .am)中“手动”进行此类变量替换:
Makefile.in
foo.sh.in
The Autoconf manual (I cannot recall or find exactly where) recommends to "manually" do such a kind of variable substitution from within a Makefile.in (or .am if you happen to use Automake):
Makefile.in
foo.sh.in