cmake/Help/command/set_property.rst

117 lines
4.3 KiB
ReStructuredText
Raw Normal View History

2014-08-03 19:52:23 +02:00
set_property
------------
Set a named property in a given scope.
2019-11-11 23:01:05 +01:00
.. code-block:: cmake
set_property(<GLOBAL |
DIRECTORY [<dir>] |
TARGET [<target1> ...] |
2020-08-30 11:54:41 +02:00
SOURCE [<src1> ...]
2021-11-20 13:41:27 +01:00
[DIRECTORY <dirs> ...]
[TARGET_DIRECTORY <targets> ...] |
2019-11-11 23:01:05 +01:00
INSTALL [<file1> ...] |
TEST [<test1> ...] |
CACHE [<entry1> ...] >
2014-08-03 19:52:23 +02:00
[APPEND] [APPEND_STRING]
2020-08-30 11:54:41 +02:00
PROPERTY <name> [<value1> ...])
2014-08-03 19:52:23 +02:00
2019-11-11 23:01:05 +01:00
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:
2014-08-03 19:52:23 +02:00
2015-04-27 22:25:09 +02:00
``GLOBAL``
Scope is unique and does not accept a name.
2014-08-03 19:52:23 +02:00
2015-04-27 22:25:09 +02:00
``DIRECTORY``
2021-09-14 00:13:48 +02:00
Scope defaults to the current directory but other directories
2019-11-11 23:01:05 +01:00
(already processed by CMake) may be named by full or relative path.
2021-09-14 00:13:48 +02:00
Relative paths are treated as relative to the current source directory.
2019-11-11 23:01:05 +01:00
See also the :command:`set_directory_properties` command.
2014-08-03 19:52:23 +02:00
2021-09-14 00:13:48 +02:00
.. versionadded:: 3.19
``<dir>`` may reference a binary directory.
2015-04-27 22:25:09 +02:00
``TARGET``
Scope may name zero or more existing targets.
2019-11-11 23:01:05 +01:00
See also the :command:`set_target_properties` command.
2014-08-03 19:52:23 +02:00
2015-04-27 22:25:09 +02:00
``SOURCE``
2020-08-30 11:54:41 +02:00
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``).
2021-09-14 00:13:48 +02:00
.. 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.
2020-08-30 11:54:41 +02:00
2021-09-14 00:13:48 +02:00
``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).
2020-08-30 11:54:41 +02:00
2019-11-11 23:01:05 +01:00
See also the :command:`set_source_files_properties` command.
2014-08-03 19:52:23 +02:00
2015-04-27 22:25:09 +02:00
``INSTALL``
2021-09-14 00:13:48 +02:00
.. versionadded:: 3.1
2015-04-27 22:25:09 +02:00
Scope may name zero or more installed file paths.
These are made available to CPack to influence deployment.
2014-08-03 19:52:23 +02:00
2015-04-27 22:25:09 +02:00
Both the property key and value may use generator expressions.
Specific properties may apply to installed files and/or directories.
2014-08-03 19:52:23 +02:00
2015-04-27 22:25:09 +02:00
Path components have to be separated by forward slashes,
must be normalized and are case sensitive.
2019-11-11 23:01:05 +01:00
To reference the installation prefix itself with a relative path use ``.``.
2015-04-27 22:25:09 +02:00
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.
2019-11-11 23:01:05 +01:00
See also the :command:`set_tests_properties` command.
2015-04-27 22:25:09 +02:00
2022-03-29 21:10:50 +02:00
Test property values may be specified using
:manual:`generator expressions <cmake-generator-expressions(7)>`
for tests created by the :command:`add_test(NAME)` signature.
2015-04-27 22:25:09 +02:00
``CACHE``
Scope must name zero or more cache existing entries.
The required ``PROPERTY`` option is immediately followed by the name of
2014-08-03 19:52:23 +02:00
the property to set. Remaining arguments are used to compose the
2018-08-09 18:06:22 +02:00
property value in the form of a semicolon-separated list.
If the ``APPEND`` option is given the list is appended to any existing
2020-08-30 11:54:41 +02:00
property value (except that empty values are ignored and not appended).
If the ``APPEND_STRING`` option is given the string is
2018-08-09 18:06:22 +02:00
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.
2015-11-17 17:22:37 +01:00
See the :manual:`cmake-properties(7)` manual for a list of properties
in each scope.
2021-09-14 00:13:48 +02:00
.. note::
The :prop_sf:`GENERATED` source file property may be globally visible.
See its documentation for details.