title_text
----------

Command ``some_cmd()`` explicit cmake domain.
Command ``some_cmd()`` without target.
Command ``some_cmd`` with target.
Command ``some_cmd_<cmd>()`` placeholder without target.
Command ``some_cmd_<cmd>`` placeholder with target.
Command ``some_cmd()`` with parens.
Command ``some_cmd(SUB)`` with subcommand.
Command ``some_cmd(SUB)`` with subcommand and target.
Command ``some_cmd (SUB)`` with space and subcommand and target.
Command ``some command`` with space and target.
Variable ``some variable`` space and target.
Variable ``<PLACEHOLDER>_VARIABLE`` with leading placeholder.
Variable ``VARIABLE_<PLACEHOLDER>`` with trailing placeholder.
Variable ``<PLACEHOLDER>_VARIABLE`` with leading placeholder and target.
Variable ``VARIABLE_<PLACEHOLDER>`` with trailing placeholder and target.
Environment variable ``SOME_ENV_VAR``.
Environment variable ``some env var`` with space and target.
Generator ``Some Generator`` with space.
Generator ``Some Generator`` with space.
Generator expression ``SOME_GENEX``.
Generator expression ``$<SOME_GENEX>`` with brackets.
Generator expression ``$<SOME_GENEX:...>`` with brackets and parameter.
Generator expression ``some genex`` with space and target.
Generator expression ``$<SOME_GENEX>`` with brackets, space, and target.
Generator expression ``$<SOME_GENEX:...>`` with brackets, parameter, space, and target.
Inline literal ``~!@#$%^&*( )_+-=\\[]{}'":;,<>.?/``.
Inline link Link Text.
Inline link Link Text <With \-escaped Brackets>.
Inline literal ``__`` followed by inline link Link Text.

First TOC entry.

|not replaced|
Second TOC entry.

CMake Module Content

More CMake Module Content

Bracket Comment Content

[
Bracket Comment Content
]

.. cmake:command:: some_cmd

   Command some_cmd description.

.. command:: other_cmd

   Command other_cmd description.

.. cmake:envvar:: some_var

   Environment variable some_var description.

.. envvar:: other_var

   Environment variable other_var description.

.. cmake:genex:: SOME_GENEX

   Generator expression SOME_GENEX description.

.. genex:: $<OTHER_GENEX>

   Generator expression $<OTHER_GENEX> description.

.. cmake:variable:: some_var

   Variable some_var description.

.. variable:: other_var

   Variable other_var description.

  Parsed-literal included without directive.
 Common Indentation Removed
 # replaced in parsed literal

 # Sample CMake code block
 if(condition)
   message(indented)
 endif()
 # |not replaced in literal|

A literal block starts after a line consisting of two colons

::

  Literal block.
 Common Indentation Removed
 # |not replaced in literal|

or after a paragraph ending in two colons::

  Literal block.
 Common Indentation Removed
 # |not replaced in literal|

but not after a line ending in two colons::
in the middle of a paragraph.

A literal block can be empty::



.. productionlist::
 grammar: `production`
 production: "content rendered"

.. note::
 Notes are called out.

.. versionadded:: 1.2
 Version blocks are preserved.

.. versionchanged:: 2.3
 Version blocks are preserved.

substituted text with multiple lines becomes one line

End of first include.

Cross-include substitution text with ``some_cmd()`` reference.

End of second include.
