どうやらMacOSとLinuxのgnuflexは-R
オプションまたは%option reentrant
リエントラントスキャナーを生成する必要がありますが、FreeBSDではデフォルトでリエントラントスキャナーを生成し、-R
または%option reentrant
が提供されている場合はエラーをスローします。gnuflex
autoconfで-Rオプションが許可されているかどうかを自動的にチェックし、許可されている場合はそれを提供したいと思います。これについてautoconfテストを行う方法は私にはわかりません。私の推測では、-Rを使用してnullファイルでgnuflexを実行し、結果コードを確認して、ある種の変数を設定してから、それをFLEXオプションに追加する必要がありますが、よくわかりません。何か案は?
2 に答える
2
$FLEX
おそらくとの組み合わせで、をAC_ARG_VAR
設定したと仮定しますAC_PATH_PROG
。
AC_CACHE_CHECK([whether $FLEX supports -R],
[my_cv_prog_flex_dash_r],
[mv_cv_prog_flex_dash_r=no
echo '%%' | "$FLEX" -R && my_cv_prog_flex_dash_r=yes
rm -f lex.yy.c])
AS_IF([test $my_cv_prog_flex_dash_r = yes], [FLEX="$FLEX -R"])
于 2012-11-26T06:18:43.080 に答える
1
これが私がやったことです。@Jack Kellyよりも読みやすく、サイド変数を作成しません...
## Determine if we can use flex -R
if eval "echo %% | $FLEX -R -t > /dev/null 2>&1"
then
AC_MSG_NOTICE([$FLEX supports -R])
else
AC_MSG_ERROR([$FLEX does not support -R. Please get a modern version of gnu flex])
fi
于 2012-11-29T04:56:47.113 に答える