顯然gnuflex在MacOS & Linux需要的-R
選項或%option reentrant
產生一個折返掃描儀,但在FreeBSD默認情況下它產生一個折返掃描儀和是否提供了-R
或%option reentrant
拋出一個錯誤。我想讓autoconf自動檢查gnuflex
是否允許使用-R選項,如果有,請提供它。我不清楚我可以如何爲此做autoconf測試。我的猜測是我應該在-R文件的空文件上運行gnuflex,並檢查結果代碼並設置某種變量,然後將它添加到FLEX選項中,但我並不確定。有任何想法嗎?如何讓autoconf檢查看-R是否可以傳遞給flex?
4
A
回答
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"])
1
這是我最終做的。它比@Jack凱利的可讀性更強,而且它不會創建一個側可變...
## 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
相關問題
- 1. 是否可以使用DTrace查看傳遞給strncpy的參數?
- 2. 是否可以將java.sql.Connection從Java傳遞給R?
- 3. 是否可以將QString傳遞給QMessageBox?
- 4. 是否可以使用autoconf檢查nvcc編譯?
- 5. 檢查是否有效的網址,以便我可以將它傳遞給NSURL?
- 6. 如何檢查參數是否傳遞給C中的函數?
- 7. 如何檢查參數是否傳遞給bash腳本
- 8. 如何檢查傳遞給javascript函數的值是否爲空?
- 9. 如何檢查給定的推文是否可以轉推?
- 10. 傳遞模型以查看可選
- 11. 可以傳遞給R中grep()的字符串長度是否有限制?
- 12. 如何將tkinter文本傳遞給flex
- 13. Flex - 如何將參數傳遞給swf
- 14. 如何將值從java傳遞給flex?
- 15. 是否可以檢查java.lang.NumberFormatException?
- 16. 檢查是否可以檢查控制?
- 17. 傳遞錯誤以查看
- 18. 如何檢查傳遞給函數的任何參數是否爲None?
- 19. 如何查看我的視圖是否可以看到?
- 20. 如何檢查列表以查看元素是否存在?
- 21. 如何檢查目錄以查看它是否有文件
- 22. 如何檢查數組以查看它是否包含零值?
- 23. 測試以查看導航屬性是否可以檢索值
- 24. 使用DD查看all_constraints以檢查FK約束是否可行
- 25. 檢查以查看元素是否可見
- 26. 如何檢查externalptr是否爲空R
- 27. 如何檢測參數是否傳遞給腳本?
- 28. 如何檢測`-Wdev`是否傳遞給CMake?
- 29. 什麼傳遞給檢查鍵是否被按下的方法?
- 30. 如何檢查可能被傳遞給函數的所有kwargs
1.這不一定是致命的,如果彎曲不支持-R。 2.在進行配置檢查時,你應該使用'AC_MSG_CHECKING' /'AC_MSG_RESULT'。 3.「變量」用於緩存,這加快了'configure'的將來運行(如果它是用'-C'調用的話)。 –
對我的程序來說是致命的。你認爲我應該讓腳本運行,但然後拋出一個編譯錯誤? – vy32
這不是我讀你的問題。它向我這樣讀,就像你可以運行沒有-R的FreeBSD flex或-R的gnuflex來獲得一個可重入的掃描器,生成你的詞法分析器並正常構建它。 (我知道你只使用autoconf,但是你知道automake的flex支持將生成的詞法分析器分發到tarball嗎?這可能也是一種選擇。) –