### Navigation

- index
- next |
- previous |
- CMake »
- 3.2.0 Documentation »
- cmake-modules(7) »

# FindBISON

Find bison executable and provides macros to generate custom build rules

The module defines the following variables:

    BISON_EXECUTABLE - path to the bison program
    BISON_VERSION - version of bison
    BISON_FOUND - true if the program was found

The minimum required version of bison can be specified using the standard CMake syntax, e.g. find_package(BISON 2.1.3)

If bison is found, the module defines the macros:

    BISON_TARGET(<Name> <YaccInput> <CodeOutput> [VERBOSE <file>]
                [COMPILE_FLAGS <string>])

which will create a custom rule to generate a parser. <YaccInput> is the path to a yacc file. <CodeOutput> is the name of the source file generated by bison. A header file is also be generated, and contains the token list. If COMPILE_FLAGS option is specified, the next parameter is added in the bison command line. if VERBOSE option is specified, <file> is created and contains verbose descriptions of the grammar and parser. The macro defines a set of variables:

    BISON_${Name}_DEFINED - true is the macro ran successfully
    BISON_${Name}_INPUT - The input source file, an alias for <YaccInput>
    BISON_${Name}_OUTPUT_SOURCE - The source file generated by bison
    BISON_${Name}_OUTPUT_HEADER - The header file generated by bison
    BISON_${Name}_OUTPUTS - The sources files generated by bison
    BISON_${Name}_COMPILE_FLAGS - Options used in the bison command line

    ====================================================================
    Example:

     find_package(BISON)
     BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp)
     add_executable(Foo main.cpp ${BISON_MyParser_OUTPUTS})
    ====================================================================

### Navigation

- index
- next |
- previous |
- CMake »
- 3.2.0 Documentation »
- cmake-modules(7) »