6

次のような 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=

ここまでは順調ですね。問題は:

  1. のように変数を展開したいのです${prefix}/shareが、すべてをファイルにパイプしexample.shて bash を使用して実行することはできUIDません。
  2. 拡張が機能するこのためにa を使用しようとしましたmakefileが、上記の出力の行のように、文字列の改行について不平を言いますIFS=' causes an error message Makefile:24: *** missing separator. Stop.

configureの出力の完全に拡張されたバージョンを取得する方法を知っている人はいますか?

4

1 に答える 1

7

Autoconf のマニュアル (正確な場所を思い出すことも見つけることもできません) では、Makefile.in (Automake を使用している場合は .am) 内からこのような種類の変数置換を「手動で」行うことを推奨しています。

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"
于 2009-10-13T15:16:44.930 に答える