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