mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-11 08:20:18 -06:00
FindFLEX: Update documentation
This fixes typos and syncs the style according to other documentation pages.
This commit is contained in:
@@ -5,46 +5,55 @@
|
||||
FindFLEX
|
||||
--------
|
||||
|
||||
Find Fast Lexical Analyzer (Flex) executable and provides a macro
|
||||
to generate custom build rules
|
||||
|
||||
|
||||
Find Fast Lexical Analyzer (Flex) executable and provide a macro
|
||||
to generate custom build rules.
|
||||
|
||||
The module defines the following variables:
|
||||
|
||||
::
|
||||
``FLEX_FOUND``
|
||||
True if ``flex`` executable is found.
|
||||
|
||||
FLEX_FOUND - True is flex executable is found
|
||||
FLEX_EXECUTABLE - the path to the flex executable
|
||||
FLEX_VERSION - the version of flex
|
||||
FLEX_LIBRARIES - The flex libraries
|
||||
FLEX_INCLUDE_DIRS - The path to the flex headers
|
||||
``FLEX_EXECUTABLE``
|
||||
The path to the ``flex`` executable.
|
||||
|
||||
``FLEX_VERSION``
|
||||
The version of ``flex``.
|
||||
|
||||
``FLEX_LIBRARIES``
|
||||
The ``flex`` libraries.
|
||||
|
||||
The minimum required version of flex can be specified using the
|
||||
standard syntax, e.g. :command:`find_package(FLEX 2.5.13)`
|
||||
``FLEX_INCLUDE_DIRS``
|
||||
The path to the ``flex`` headers.
|
||||
|
||||
The minimum required version of ``flex`` can be specified using the
|
||||
standard CMake syntax, e.g. :command:`find_package(FLEX 2.5.13)`.
|
||||
|
||||
If ``flex`` is found on the system, the module defines the macro:
|
||||
|
||||
If flex is found on the system, the module provides the macro:
|
||||
.. command:: flex_target
|
||||
|
||||
::
|
||||
.. code-block:: cmake
|
||||
|
||||
FLEX_TARGET(Name FlexInput FlexOutput
|
||||
[COMPILE_FLAGS <string>]
|
||||
[DEFINES_FILE <string>]
|
||||
)
|
||||
flex_target(<Name> <FlexInput> <FlexOutput>
|
||||
[COMPILE_FLAGS <string>]
|
||||
[DEFINES_FILE <string>]
|
||||
)
|
||||
|
||||
which creates a custom command to generate the ``FlexOutput`` file from
|
||||
the ``FlexInput`` file. Name is an alias used to get details of this custom
|
||||
command. If ``COMPILE_FLAGS`` option is specified, the next
|
||||
parameter is added to the flex command line.
|
||||
which creates a custom command to generate the ``<FlexOutput>`` file from
|
||||
the ``<FlexInput>`` file. ``<Name>`` is an alias used to get details of this
|
||||
custom command.
|
||||
|
||||
.. versionadded:: 3.5
|
||||
If flex is configured to
|
||||
output a header file, the ``DEFINES_FILE`` option may be used to specify its
|
||||
name.
|
||||
The options are:
|
||||
|
||||
``COMPILE_FLAGS <string>``
|
||||
Space-separated flex options added to the ``flex`` command line.
|
||||
A :ref:`;-list <CMake Language Lists>` will not work.
|
||||
|
||||
``DEFINES_FILE <string>``
|
||||
.. versionadded:: 3.5
|
||||
|
||||
If flex is configured to output a header file, this option may be used to
|
||||
specify its name.
|
||||
|
||||
.. versionchanged:: 3.17
|
||||
When :policy:`CMP0098` is set to ``NEW``, ``flex`` runs in the
|
||||
@@ -52,60 +61,51 @@ parameter is added to the flex command line.
|
||||
|
||||
The macro defines the following variables:
|
||||
|
||||
::
|
||||
``FLEX_<Name>_DEFINED``
|
||||
True if the macro ran successfully.
|
||||
|
||||
FLEX_${Name}_DEFINED - true is the macro ran successfully
|
||||
FLEX_${Name}_OUTPUTS - the source file generated by the custom rule, an
|
||||
alias for FlexOutput
|
||||
FLEX_${Name}_INPUT - the flex source file, an alias for ${FlexInput}
|
||||
FLEX_${Name}_OUTPUT_HEADER - the header flex output, if any.
|
||||
``FLEX_<Name>_OUTPUTS``
|
||||
The source file generated by the custom rule, an alias for ``<FlexOutput>``.
|
||||
|
||||
``FLEX_<Name>_INPUT``
|
||||
The flex source file, an alias for ``<FlexInput>``.
|
||||
|
||||
``FLEX_<Name>_OUTPUT_HEADER``
|
||||
The header flex output, if any.
|
||||
|
||||
Flex scanners often use tokens defined by Bison: the code generated
|
||||
by Flex depends of the header generated by Bison. This module also
|
||||
defines a macro:
|
||||
|
||||
::
|
||||
.. command:: add_flex_bison_dependency
|
||||
|
||||
ADD_FLEX_BISON_DEPENDENCY(FlexTarget BisonTarget)
|
||||
.. code-block:: cmake
|
||||
|
||||
add_flex_bison_dependency(<FlexTarget> <BisonTarget>)
|
||||
|
||||
which adds the required dependency between a scanner and a parser
|
||||
where ``FlexTarget`` and ``BisonTarget`` are the first parameters of
|
||||
respectively ``FLEX_TARGET`` and ``BISON_TARGET`` macros.
|
||||
where ``<FlexTarget>`` and ``<BisonTarget>`` are the first parameters of
|
||||
respectively ``flex_target`` and ``bison_target`` macros.
|
||||
|
||||
::
|
||||
Examples
|
||||
^^^^^^^^
|
||||
|
||||
====================================================================
|
||||
Example:
|
||||
.. code-block:: cmake
|
||||
|
||||
find_package(BISON)
|
||||
find_package(FLEX)
|
||||
|
||||
bison_target(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp)
|
||||
flex_target(MyScanner lexer.l ${CMAKE_CURRENT_BINARY_DIR}/lexer.cpp)
|
||||
add_flex_bison_dependency(MyScanner MyParser)
|
||||
|
||||
::
|
||||
|
||||
find_package(BISON)
|
||||
find_package(FLEX)
|
||||
|
||||
|
||||
|
||||
::
|
||||
|
||||
BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp)
|
||||
FLEX_TARGET(MyScanner lexer.l ${CMAKE_CURRENT_BINARY_DIR}/lexer.cpp)
|
||||
ADD_FLEX_BISON_DEPENDENCY(MyScanner MyParser)
|
||||
|
||||
|
||||
|
||||
::
|
||||
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_executable(Foo
|
||||
Foo.cc
|
||||
${BISON_MyParser_OUTPUTS}
|
||||
${FLEX_MyScanner_OUTPUTS}
|
||||
)
|
||||
target_link_libraries(Foo ${FLEX_LIBRARIES})
|
||||
====================================================================
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_executable(Foo
|
||||
Foo.cc
|
||||
${BISON_MyParser_OUTPUTS}
|
||||
${FLEX_MyScanner_OUTPUTS}
|
||||
)
|
||||
target_link_libraries(Foo ${FLEX_LIBRARIES})
|
||||
#]=======================================================================]
|
||||
|
||||
find_program(FLEX_EXECUTABLE NAMES flex win-flex win_flex DOC "path to the flex executable")
|
||||
|
||||
Reference in New Issue
Block a user