4

どうやらMacOSとLinuxのgnuflexは-Rオプションまたは%option reentrantリエントラントスキャナーを生成する必要がありますが、FreeBSDではデフォルトでリエントラントスキャナーを生成し、-Rまたは%option reentrantが提供されている場合はエラーをスローします。gnuflexautoconfで-Rオプションが許可されているかどうかを自動的にチェックし、許可されている場合はそれを提供したいと思います。これについてautoconfテストを行う方法は私にはわかりません。私の推測では、-Rを使用してnullファイルでgnuflexを実行し、結果コードを確認して、ある種の変数を設定してから、それをFLEXオプションに追加する必要がありますが、よくわかりません。何か案は?

4

2 に答える 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 に答える