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 生成的源文件的文件名。该宏还会生成一个头文件,其中包含令牌列表。

在版本 3.14 中更改:CMP0088 设置为 NEW 时,bison 会在 CMAKE_CURRENT_BINARY_DIR 目录中运行。

选项如下所示

COMPILE_FLAGS <flags>

指定要添加到 bison 命令行的标志。

DEFINES_FILE <file>

在版本 3.4 中添加。

指定 bison 要生成一个非默认头文件 <file>

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