寻找野牛

找到 bison 可执行文件并提供一个宏来生成自定义构建规则。

该模块定义了以下变量:

BISON_EXECUTABLE

bison 程序的路径

BISON_VERSION

``野牛``的版本

BISON_FOUND

如果找到程序则为“真”

可以使用标准 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 <标志>

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

DEFINES_FILE <文件>

在 3.4 版本加入.

指定由 bison 生成的非默认标头 <file>

详细 [<文件>]

告诉 bison 编写语法和解析器的报告文件。

自 3.7 版本弃用: 如果给出了``<file>``,它指定了报告文件复制到的路径。 [<file>] 是为了这个模块的向后兼容而保留的。使用 VERBOSE REPORT_FILE <file>

REPORT_FILE <文件>

在 3.7 版本加入.

如果生成,请指定一个非默认报告 <file>

该宏定义了以下变量:

BISON_<名称>_DEFINED

True 是宏运行成功

BISON_<名称>_INPUT

输入源文件,<YaccInput> 的别名

BISON_<名称>_OUTPUT_SOURCE

bison生成的源文件

BISON_<名称>_OUTPUT_HEADER

bison生成的头文件

BISON_<名称>_OUTPUTS

bison 生成的所有文件,包括源文件、标题和报告

BISON_<名称>_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})