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 cref ``Link Dest``.
Inline cref ``Link_Dest_<Placeholder>``.
Inline cref ``Link Text``.
Inline cref ``Link_Text_<Placeholder>``.
Inline link Link Dest.
Inline link Link Text.
Inline link Link Text <With \-escaped Brackets>.
Inline literal ``__`` followed by inline link Link Text.
Inline literal ``~!@#$%^&*( )_+-=\\[]{}'":;,<>.?/``.

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:signature::
   some_command(SOME_SIGNATURE)

   Command some_command SOME_SIGNATURE description.

.. signature:: other_command(OTHER_SIGNATURE)

   Command other_command OTHER_SIGNATURE 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.
