| set_property | |
| ------------ | |
| Set a named property in a given scope. | |
| .. code-block:: cmake | |
| set_property(<GLOBAL | | |
| DIRECTORY [<dir>] | | |
| TARGET [<target1> ...] | | |
| SOURCE [<src1> ...] | |
| [DIRECTORY <dirs> ...] | | |
| [TARGET_DIRECTORY <targets> ...] | |
| INSTALL [<file1> ...] | | |
| TEST [<test1> ...] | | |
| CACHE [<entry1> ...] > | |
| [APPEND] [APPEND_STRING] | |
| PROPERTY <name> [<value1> ...]) | |
| Sets one property on zero or more objects of a scope. | |
| The first argument determines the scope in which the property is set. | |
| It must be one of the following: | |
| ``GLOBAL`` | |
| Scope is unique and does not accept a name. | |
| ``DIRECTORY`` | |
| Scope defaults to the current directory but other directories | |
| (already processed by CMake) may be named by full or relative path. | |
| Relative paths are treated as relative to the current source directory. | |
| See also the :command:`set_directory_properties` command. | |
| .. versionadded:: 3.19 | |
| ``<dir>`` may reference a binary directory. | |
| ``TARGET`` | |
| Scope may name zero or more existing targets. | |
| See also the :command:`set_target_properties` command. | |
| ``SOURCE`` | |
| Scope may name zero or more source files. By default, source file properties | |
| are only visible to targets added in the same directory (``CMakeLists.txt``). | |
| .. versionadded:: 3.18 | |
| Visibility can be set in other directory scopes using one or both of the | |
| following sub-options: | |
| ``DIRECTORY <dirs>...`` | |
| The source file property will be set in each of the ``<dirs>`` | |
| directories' scopes. CMake must already know about | |
| each of these directories, either by having added them through a call to | |
| :command:`add_subdirectory` or it being the top level source directory. | |
| Relative paths are treated as relative to the current source directory. | |
| .. versionadded:: 3.19 | |
| ``<dirs>`` may reference a binary directory. | |
| ``TARGET_DIRECTORY <targets>...`` | |
| The source file property will be set in each of the directory scopes | |
| where any of the specified ``<targets>`` were created (the ``<targets>`` | |
| must therefore already exist). | |
| See also the :command:`set_source_files_properties` command. | |
| ``INSTALL`` | |
| .. versionadded:: 3.1 | |
| Scope may name zero or more installed file paths. | |
| These are made available to CPack to influence deployment. | |
| Both the property key and value may use generator expressions. | |
| Specific properties may apply to installed files and/or directories. | |
| Path components have to be separated by forward slashes, | |
| must be normalized and are case sensitive. | |
| To reference the installation prefix itself with a relative path use ``.``. | |
| Currently installed file properties are only defined for | |
| the WIX generator where the given paths are relative | |
| to the installation prefix. | |
| ``TEST`` | |
| Scope may name zero or more existing tests. | |
| See also the :command:`set_tests_properties` command. | |
| ``CACHE`` | |
| Scope must name zero or more cache existing entries. | |
| The required ``PROPERTY`` option is immediately followed by the name of | |
| the property to set. Remaining arguments are used to compose the | |
| property value in the form of a semicolon-separated list. | |
| If the ``APPEND`` option is given the list is appended to any existing | |
| property value (except that empty values are ignored and not appended). | |
| If the ``APPEND_STRING`` option is given the string is | |
| appended to any existing property value as string, i.e. it results in a | |
| longer string and not a list of strings. When using ``APPEND`` or | |
| ``APPEND_STRING`` with a property defined to support ``INHERITED`` | |
| behavior (see :command:`define_property`), no inheriting occurs when | |
| finding the initial value to append to. If the property is not already | |
| directly set in the nominated scope, the command will behave as though | |
| ``APPEND`` or ``APPEND_STRING`` had not been given. | |
| See the :manual:`cmake-properties(7)` manual for a list of properties | |
| in each scope. | |
| .. note:: | |
| The :prop_sf:`GENERATED` source file property may be globally visible. | |
| See its documentation for details. |