ANDROID_NDK_ROOT
Autoconfスクリプトでが設定されているかどうかをテストしようとしています。関連するスタンザを以下に示します。どうすれば環境変数を確認できますか?Autoconfメーリングリストでは、次のものを使用できます。
if test "${var+set}" = set; then
echo "variable \$var is set to: $var"
fi
変数は設定AC_MSG_ERROR
されていませんが、myは実行されていません。
$ printenv | grep ANDROID_NDK_ROOT
$
代わりに、テストで次のエラーが発生します。
./configure: line 20616: syntax error near unexpected token `('
./configure: line 20616: ` $as_echo_n "(cached) " >&6'
(スレッドには別の返信がありますが、それは単なるコメントのようで、質問には答えません)。
Autoconfで環境変数が設定されているかどうかをテストするにはどうすればよいですか?
これが私が実行しようとしているスタンザですconfigure.ac
:
# if test "$IS_ANDROID_OS" != "0"; then
if true; then
if test "${ANDROID_NDK_ROOT+set}" != set; then
AC_MSG_ERROR([ANDROID_NDK_ROOT is not set. Please set ANDROID_NDK_ROOT])
fi
THIS_FILE="$ANDROID_NDK_ROOT/sources/android/cpufeatures/cpu-features.h"
AC_CHECK_FILE([$THIS_FILE],
[cp "$THIS_FILE" "$ac_srcdir"],
AC_MSG_RESULT([cpu-features.h does not exist in ANDROID_NDK_ROOT, skipping])
)
THIS_FILE="$ANDROID_NDK_ROOT/sources/android/cpufeatures/cpu-features.c"
AC_CHECK_FILE([$THIS_FILE],
[cp "$THIS_FILE" "$ac_srcdir"],
AC_MSG_RESULT([cpu-features.c does not exist in ANDROID_NDK_ROOT, skipping])
)
fi
これがconfigure
fromのチャンクですcat -n
:
20610
20611 THIS_FILE="$ANDROID_NDK_ROOT/sources/android/cpufeatures/cpu-features.c"
20612 as_ac_File=`$as_echo "ac_cv_file_$THIS_FILE" | $as_tr_sh`
20613 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $THIS_FILE" >&5
20614 $as_echo_n "checking for $THIS_FILE... " >&6; }
20615 if eval \${$as_ac_File+:} false; then :
20616 $as_echo_n "(cached) " >&6
20617 else
20618 test "$cross_compiling" = yes &&
20619 as_fn_error $? "cannot check for file existence when cross compiling""$LINENO" 5
20620 if test -r "$THIS_FILE"; then
20621 eval "$as_ac_File=yes"
20622 else
20623 eval "$as_ac_File=no"
20624 fi
変数が設定されているかどうかをテストするためのシェル構文に問題はなく、Autoconfで正常に機能します。
この問題は、AC_CHECK_FILE()
マクロへの3番目の引数の引用に失敗したことから発生しているようです。特にその引数がマクロ呼び出し自体であるか、マクロ呼び出し自体を含む場合は、常に各マクロの各引数を(角括弧で)引用する必要があります。configure
提供したサンプルコードをAC_INIT
との間にラップすることで構文エラーを再現できますが、AC_OUTPUT
適切な引用符を使用すると解消されます。具体的には、ここで:
THIS_FILE="$ANDROID_NDK_ROOT/sources/android/cpufeatures/cpu-features.h"
AC_CHECK_FILE([$THIS_FILE],
[cp "$THIS_FILE" "$ac_srcdir"],
[AC_MSG_RESULT([cpu-features.h does not exist in ANDROID_NDK_ROOT, skipping])]
)
THIS_FILE="$ANDROID_NDK_ROOT/sources/android/cpufeatures/cpu-features.c"
AC_CHECK_FILE([$THIS_FILE],
[cp "$THIS_FILE" "$ac_srcdir"],
[AC_MSG_RESULT([cpu-features.c does not exist in ANDROID_NDK_ROOT, skipping])]
)
引数の引用に失敗すると、引数が何度も展開され、結果の出力は実際には構文的に有効なシェルコードではありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加