| set_property | |
| ------------ | |
| Set a named property in a given scope. | |
| .. code-block:: cmake | |
| set_property({GLOBAL | | |
| DIRECTORY [<dir>] | | |
| RULE <rule>... | | |
| TARGET <target>... | | |
| FILE_SET <file_set>... TARGET <target> | | |
| SOURCE <source>... | |
| [DIRECTORY <dirs> ...] | |
| [TARGET_DIRECTORY <targets>...] | | |
| INSTALL <file>... | | |
| TEST <test>... | |
| [DIRECTORY <dir>] | | |
| CACHE <entry>...} | |
| [APPEND] [APPEND_STRING] | |
| PROPERTY <name> [<value>...]) | |
| 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. | |
| ``RULE`` | |
| .. versionadded:: 4.5 | |
| Scope may name zero or more existing rules in the current directory, created | |
| by the :command:`add_custom_rule` command. | |
| ``TARGET`` | |
| Scope may name zero or more existing targets. | |
| See also the :command:`set_target_properties` command. | |
| .. versionchanged:: 4.5 | |
| If ``<target>`` is an :ref:`Alias Target <Alias Targets>`, properties are | |
| set on the target which the alias references. | |
| ``FILE_SET`` | |
| .. versionadded:: 4.3 | |
| Scope may name zero or more existing file sets. | |
| The following option is required: | |
| ``TARGET <target>`` | |
| The target to which the file set is attached. | |
| ``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 is limited to the directory the command is called in. It may name zero | |
| or more existing tests. See also command :command:`set_tests_properties`. | |
| Test property values may be specified using | |
| :manual:`generator expressions <cmake-generator-expressions(7)>` | |
| for tests created by the :command:`add_test(NAME)` signature. | |
| .. versionadded:: 3.28 | |
| Visibility can be set in other directory scopes using the following sub-option: | |
| ``DIRECTORY <dir>`` | |
| The test property will be set in the ``<dir>`` directory's scope. CMake must | |
| already know about this directory, either by having added it 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. | |
| ``<dir>`` may reference a binary directory. | |
| ``CACHE`` | |
| Scope must name zero or more existing cache 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. | |
| .. note:: | |
| The :prop_sf:`GENERATED` source file property may be globally visible. | |
| See its documentation for details. | |
| See Also | |
| ^^^^^^^^ | |
| * :command:`define_property` | |
| * :command:`get_property` | |
| * The :manual:`cmake-properties(7)` manual for a list of properties | |
| in each scope. |