寻找野牛¶
找到 bison 可执行文件并提供一个宏来生成自定义构建规则。
该模块定义了以下变量:
BISON_EXECUTABLEbison程序的路径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_<名称>_DEFINEDTrue是宏运行成功BISON_<名称>_INPUT输入源文件,<YaccInput> 的别名
BISON_<名称>_OUTPUT_SOURCEbison生成的源文件
BISON_<名称>_OUTPUT_HEADERbison生成的头文件
BISON_<名称>_OUTPUTSbison 生成的所有文件,包括源文件、标题和报告
BISON_<名称>_COMPILE_FLAGSbison命令行中使用的选项
用法示例:
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})