FindBISON

尋找 bison 執行檔,並提供巨集以產生自訂建置規則。

此模組定義以下變數

BISON_EXECUTABLE

bison 程式的路徑

BISON_VERSION

bison 的版本

BISON_FOUND

如果找到程式則為 "True"

可以使用標準的 CMake 語法指定 bison 的最低所需版本,例如 find_package(BISON 2.1.3)

如果找到 bison,此模組會定義巨集

BISON_TARGET(<Name> <YaccInput> <CodeOutput>
             [COMPILE_FLAGS <flags>]
             [DEFINES_FILE <file>]
             [VERBOSE [<file>]]
             [REPORT_FILE <file>]
             )

這將會建立一個自訂規則以產生剖析器。<YaccInput> 是 yacc 檔案的路徑。<CodeOutput> 是 bison 產生的原始碼檔案名稱。也會產生一個標頭檔,其中包含 token 列表。

在 3.14 版本變更:CMP0088 設定為 NEW 時,bison 會在 CMAKE_CURRENT_BINARY_DIR 目錄中執行。

選項如下

COMPILE_FLAGS <flags>

指定要新增到 bison 命令列的旗標。

DEFINES_FILE <file>

在 3.4 版本中新增。

指定一個非預設的標頭 <file>bison 產生。

VERBOSE [<file>]

告訴 bison 寫入一個關於文法和剖析器的報告檔案。

自 3.7 版本起已棄用:如果給定 <file>,則它指定報告檔案複製到的路徑。[<file>] 為了此模組的向後相容性而保留。請使用 VERBOSE REPORT_FILE <file>

REPORT_FILE <file>

在 3.7 版本中新增。

指定一個非預設的報告 <file>,如果產生的話。

此巨集定義以下變數

BISON_<Name>_DEFINED

如果巨集成功執行則為 True

BISON_<Name>_INPUT

輸入原始碼檔案,<YaccInput> 的別名

BISON_<Name>_OUTPUT_SOURCE

由 bison 產生的原始碼檔案

BISON_<Name>_OUTPUT_HEADER

由 bison 產生的標頭檔

BISON_<Name>_OUTPUTS

由 bison 產生的所有檔案,包含原始碼、標頭和報告

BISON_<Name>_COMPILE_FLAGS

bison 命令列中使用的選項

使用範例

find_package(BISON)
BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp
             DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/parser.h)
add_executable(Foo main.cpp ${BISON_MyParser_OUTPUTS})