define_property
---------------

Define and document custom properties.

::

  define_property(<GLOBAL | DIRECTORY | TARGET | SOURCE |
                   TEST | VARIABLE | CACHED_VARIABLE>
                   PROPERTY <name> [INHERITED]
                   BRIEF_DOCS <brief-doc> [docs...]
                   FULL_DOCS <full-doc> [docs...])

Define one property in a scope for use with the set_property and
get_property commands.  This is primarily useful to associate
documentation with property names that may be retrieved with the
get_property command.  The first argument determines the kind of scope
in which the property should be used.  It must be one of the
following:

::

  GLOBAL    = associated with the global namespace
  DIRECTORY = associated with one directory
  TARGET    = associated with one target
  SOURCE    = associated with one source file
  TEST      = associated with a test named with add_test
  VARIABLE  = documents a CMake language variable
  CACHED_VARIABLE = documents a CMake cache variable

Note that unlike set_property and get_property no actual scope needs
to be given; only the kind of scope is important.

The required PROPERTY option is immediately followed by the name of
the property being defined.

If the INHERITED option then the get_property command will chain up to
the next higher scope when the requested property is not set in the
scope given to the command.  DIRECTORY scope chains to GLOBAL.
TARGET, SOURCE, and TEST chain to DIRECTORY.

The BRIEF_DOCS and FULL_DOCS options are followed by strings to be
associated with the property as its brief and full documentation.
Corresponding options to the get_property command will retrieve the
documentation.
