Help/dev: Cover module function naming in CMake Documentation Guide

This commit is contained in:
Brad King
2021-12-07 12:29:47 -05:00
parent 15adc8f9b6
commit 74f1fbb7a1

View File

@@ -513,7 +513,7 @@ bracket is excluded if and only if the line starts in ``#``.
Additional such ``.rst:`` comments may appear anywhere in the module file.
All such comments must start with ``#`` in the first column.
For example, a ``Findxxx.cmake`` module may contain:
For example, a ``FindXxx.cmake`` module may contain:
::
@@ -540,13 +540,13 @@ For example, a ``Findxxx.cmake`` module may contain:
<code>
#[=======================================================================[.rst:
.. command:: xxx_do_something
.. command:: Xxx_do_something
This command does something for Xxx::
xxx_do_something(some arguments)
Xxx_do_something(some arguments)
#]=======================================================================]
macro(xxx_do_something)
macro(Xxx_do_something)
<code>
endmacro()
@@ -559,3 +559,56 @@ documentation, simply leave out the ``Help/module/<module-name>.rst``
file and the ``Help/manual/cmake-modules.7.rst`` toctree entry.
.. _`Bracket Comment`: https://cmake.org/cmake/help/latest/manual/cmake-language.7.html#bracket-comment
Module Functions and Macros
---------------------------
Modules may provide CMake functions and macros defined by the `function()`_
and `macro()`_ commands. To avoid conflicts across modules, name the
functions and macros using the prefix ``<ModuleName>_`` followed by the
rest of the name, where ``<ModuleName>`` is the exact-case spelling of
the module name. We have no convention for the portion of names after
the ``<ModuleName>_`` prefix.
For historical reasons, some modules that come with CMake do not follow
this prefix convention. When adding new functions to these modules,
discussion during review can decide whether to follow their existing
convention or to use the module name prefix.
Documentation of public functions and macros should be provided in
the module, typically in the main `module documentation`_ at the top.
For example, a ``MyModule`` module may document a function like this::
#[=======================================================================[.rst:
MyModule
--------
This is my module. It provides some functions.
.. command:: MyModule_Some_Function
This is some function:
.. code-block:: cmake
MyModule_Some_Function(...)
#]=======================================================================]
Documentation may alternatively be placed just before each definition.
For example, a ``MyModule`` module may document another function like this::
#[=======================================================================[.rst:
.. command:: MyModule_Other_Function
This is another function:
.. code-block:: cmake
MyModule_Other_Function(...)
#]=======================================================================]
function(MyModule_Other_Function ...)
# ...
endfunction()
.. _`function()`: https://cmake.org/cmake/help/latest/command/function.html
.. _`macro()`: https://cmake.org/cmake/help/latest/command/macro.html