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})