mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-16 14:08:35 +08:00
Help: Add documentation for runtime dependency installation
This commit is contained in:
@@ -15,6 +15,7 @@ Synopsis
|
|||||||
install(`SCRIPT`_ <file> [...])
|
install(`SCRIPT`_ <file> [...])
|
||||||
install(`CODE`_ <code> [...])
|
install(`CODE`_ <code> [...])
|
||||||
install(`EXPORT`_ <export-name> [...])
|
install(`EXPORT`_ <export-name> [...])
|
||||||
|
install(`RUNTIME_DEPENDENCY_SET`_ <set-name> [...])
|
||||||
|
|
||||||
Introduction
|
Introduction
|
||||||
^^^^^^^^^^^^
|
^^^^^^^^^^^^
|
||||||
@@ -125,6 +126,7 @@ Installing Targets
|
|||||||
.. code-block:: cmake
|
.. code-block:: cmake
|
||||||
|
|
||||||
install(TARGETS targets... [EXPORT <export-name>]
|
install(TARGETS targets... [EXPORT <export-name>]
|
||||||
|
[RUNTIME_DEPENDENCIES args...|RUNTIME_DEPENDENCY_SET <set-name>]
|
||||||
[[ARCHIVE|LIBRARY|RUNTIME|OBJECTS|FRAMEWORK|BUNDLE|
|
[[ARCHIVE|LIBRARY|RUNTIME|OBJECTS|FRAMEWORK|BUNDLE|
|
||||||
PRIVATE_HEADER|PUBLIC_HEADER|RESOURCE]
|
PRIVATE_HEADER|PUBLIC_HEADER|RESOURCE]
|
||||||
[DESTINATION <dir>]
|
[DESTINATION <dir>]
|
||||||
@@ -339,6 +341,34 @@ top level:
|
|||||||
relative path is specified, it is treated as relative to the
|
relative path is specified, it is treated as relative to the
|
||||||
``$<INSTALL_PREFIX>``.
|
``$<INSTALL_PREFIX>``.
|
||||||
|
|
||||||
|
``RUNTIME_DEPENDENCY_SET``
|
||||||
|
.. versionadded:: 3.21
|
||||||
|
|
||||||
|
This option causes all runtime dependencies of installed executable, shared
|
||||||
|
library, and module targets to be added to the specified runtime dependency
|
||||||
|
set. This set can then be installed later on with an
|
||||||
|
`install(RUNTIME_DEPENDENCY_SET)`_ command.
|
||||||
|
|
||||||
|
This argument and the ``RUNTIME_DEPENDENCIES`` argument are mutually
|
||||||
|
exclusive.
|
||||||
|
|
||||||
|
``RUNTIME_DEPENDENCIES``
|
||||||
|
.. versionadded:: 3.21
|
||||||
|
|
||||||
|
This option causes all runtime dependencies of installed executable, shared
|
||||||
|
library, and module targets to be installed along with the targets
|
||||||
|
themselves. The ``RUNTIME``, ``LIBRARY``, ``FRAMEWORK``, and generic
|
||||||
|
arguments are used to determine the properties (``DESTINATION``,
|
||||||
|
``COMPONENT``, etc.) of the installation of these dependencies.
|
||||||
|
|
||||||
|
``RUNTIME_DEPENDENCIES`` is semantically equivalent to calling
|
||||||
|
``install(TARGETS ... RUNTIME_DEPENDENCY_SET)`` and then
|
||||||
|
`install(RUNTIME_DEPENDENCY_SET)`_ with a randomly generated name. It accepts
|
||||||
|
all of the same options as `install(RUNTIME_DEPENDENCY_SET)`_.
|
||||||
|
|
||||||
|
This argument and the ``RUNTIME_DEPENDENCY_SET`` argument are mutually
|
||||||
|
exclusive.
|
||||||
|
|
||||||
One or more groups of properties may be specified in a single call to
|
One or more groups of properties may be specified in a single call to
|
||||||
the ``TARGETS`` form of this command. A target may be installed more than
|
the ``TARGETS`` form of this command. A target may be installed more than
|
||||||
once to different locations. Consider hypothetical targets ``myExe``,
|
once to different locations. Consider hypothetical targets ``myExe``,
|
||||||
@@ -394,6 +424,7 @@ Installing Imported Runtime Artifacts
|
|||||||
.. code-block:: cmake
|
.. code-block:: cmake
|
||||||
|
|
||||||
install(IMPORTED_RUNTIME_ARTIFACTS targets...
|
install(IMPORTED_RUNTIME_ARTIFACTS targets...
|
||||||
|
[RUNTIME_DEPENDENCY_SET <set-name>]
|
||||||
[[LIBRARY|RUNTIME|FRAMEWORK|BUNDLE]
|
[[LIBRARY|RUNTIME|FRAMEWORK|BUNDLE]
|
||||||
[DESTINATION <dir>]
|
[DESTINATION <dir>]
|
||||||
[PERMISSIONS permissions...]
|
[PERMISSIONS permissions...]
|
||||||
@@ -415,6 +446,15 @@ not installed. In the case of :prop_tgt:`FRAMEWORK` libraries,
|
|||||||
:prop_tgt:`MACOSX_BUNDLE` executables, and :prop_tgt:`BUNDLE` CFBundles, the
|
:prop_tgt:`MACOSX_BUNDLE` executables, and :prop_tgt:`BUNDLE` CFBundles, the
|
||||||
entire directory is installed.
|
entire directory is installed.
|
||||||
|
|
||||||
|
``IMPORTED_RUNTIME_ARTIFACTS`` accepts the following additional arguments:
|
||||||
|
|
||||||
|
``RUNTIME_DEPENDENCY_SET``
|
||||||
|
|
||||||
|
This option causes all runtime dependencies of installed executable, shared
|
||||||
|
library, and module targets to be added to the specified runtime dependency
|
||||||
|
set. This set can then be installed later on with an
|
||||||
|
`install(RUNTIME_DEPENDENCY_SET)`_ command.
|
||||||
|
|
||||||
Installing Files
|
Installing Files
|
||||||
^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
@@ -773,6 +813,74 @@ executable from the installation tree using the imported target name
|
|||||||
:command:`install_files`, and :command:`install_programs` commands
|
:command:`install_files`, and :command:`install_programs` commands
|
||||||
is not defined.
|
is not defined.
|
||||||
|
|
||||||
|
Installing Runtime Dependencies
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. _`install(RUNTIME_DEPENDENCY_SET)`:
|
||||||
|
.. _RUNTIME_DEPENDENCY_SET:
|
||||||
|
|
||||||
|
.. versionadded:: 3.21
|
||||||
|
|
||||||
|
.. code-block:: cmake
|
||||||
|
|
||||||
|
install(RUNTIME_DEPENDENCY_SET <set-name>
|
||||||
|
[[LIBRARY|RUNTIME|FRAMEWORK]
|
||||||
|
[DESTINATION <dir>]
|
||||||
|
[PERMISSIONS permissions...]
|
||||||
|
[CONFIGURATIONS [Debug|Release|...]]
|
||||||
|
[COMPONENT <component>]
|
||||||
|
[NAMELINK_COMPONENT <component>]
|
||||||
|
[OPTIONAL] [EXCLUDE_FROM_ALL]
|
||||||
|
] [...]
|
||||||
|
[PRE_INCLUDE_REGEXES regexes...]
|
||||||
|
[PRE_EXCLUDE_REGEXES regexes...]
|
||||||
|
[POST_INCLUDE_REGEXES regexes...]
|
||||||
|
[POST_EXCLUDE_REGEXES regexes...]
|
||||||
|
[DIRECTORIES directories...]
|
||||||
|
)
|
||||||
|
|
||||||
|
Installs a runtime dependency set created by one or more
|
||||||
|
`install(TARGETS)`_ or `install(IMPORTED_RUNTIME_ARTIFACTS)`_ commands. The
|
||||||
|
dependencies of targets belonging to a runtime dependency set are installed in
|
||||||
|
the ``RUNTIME`` destination and component on DLL platforms, and in the
|
||||||
|
``LIBRARY`` destination and component on non-DLL platforms. macOS frameworks
|
||||||
|
are installed in the ``FRAMEWORK`` destination and component. The generated
|
||||||
|
install script calls :command:`file(GET_RUNTIME_DEPENDENCIES)` on the
|
||||||
|
build-tree files to calculate the runtime dependencies, with the build-tree
|
||||||
|
executable files as the ``EXECUTABLES`` argument, the build-tree shared
|
||||||
|
libraries as the ``LIBRARIES`` argument, and the build-tree modules as the
|
||||||
|
``MODULES`` argument. If one of the executables is a :prop_tgt:`MACOSX_BUNDLE`
|
||||||
|
executable on a macOS platform, that executable is passed as the
|
||||||
|
``BUNDLE_EXECUTABLE`` argument. If ``RUNTIME_DEPENDENCY_SET`` is specified on
|
||||||
|
a macOS platform, at most one :prop_tgt:`MACOSX_BUNDLE` executable may be in
|
||||||
|
the runtime dependency set. The :prop_tgt:`MACOSX_BUNDLE` property has no
|
||||||
|
effect on non-macOS platforms. Targets built within the build tree will never
|
||||||
|
be installed as runtime dependencies, nor will their own dependencies, unless
|
||||||
|
the targets themselves are installed with `install(TARGETS)`_.
|
||||||
|
|
||||||
|
This argument accepts the following sub-arguments:
|
||||||
|
|
||||||
|
``DIRECTORIES <directories>``
|
||||||
|
List of directories to be passed as the ``DIRECTORIES`` argument of
|
||||||
|
:command:`file(GET_RUNTIME_DEPENDENCIES)`. This argument supports
|
||||||
|
:manual:`generator expressions <cmake-generator-expressions(7)>`. If a
|
||||||
|
``DIRECTORIES`` argument evaluates to an empty string, it is not passed to
|
||||||
|
:command:`file(GET_RUNTIME_DEPENDENCIES)`.
|
||||||
|
|
||||||
|
``PRE_INCLUDE_REGEXES <regexes>``, ``PRE_EXCLUDE_REGEXES <regexes>``, ``POST_INCLUDE_REGEXES <regexes>``, ``POST_EXCLUDE_REGEXES <regexes>``
|
||||||
|
List of regular expressions to be passed as their respective arguments to
|
||||||
|
:command:`file(GET_RUNTIME_DEPENDENCIES)`. These arguments support
|
||||||
|
:manual:`generator expressions <cmake-generator-expressions(7)>`. If an
|
||||||
|
argument evaluates to an empty string, it is not passed to
|
||||||
|
:command:`file(GET_RUNTIME_DEPENDENCIES)`.
|
||||||
|
|
||||||
|
``POST_INCLUDE_FILES <files>``, ``POST_EXCLUDE_FILES <files>``
|
||||||
|
List of files to be passed as their respective arguments to
|
||||||
|
:command:`file(GET_RUNTIME_DEPENDENCIES)`. These arguments support
|
||||||
|
:manual:`generator expressions <cmake-generator-expressions(7)>`. If an
|
||||||
|
argument evaluates to an empty string, it is not passed to
|
||||||
|
:command:`file(GET_RUNTIME_DEPENDENCIES)`.
|
||||||
|
|
||||||
Generated Installation Script
|
Generated Installation Script
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
@@ -966,8 +966,9 @@ which is just the string ``tgt``.
|
|||||||
.. genex:: $<INSTALL_PREFIX>
|
.. genex:: $<INSTALL_PREFIX>
|
||||||
|
|
||||||
Content of the install prefix when the target is exported via
|
Content of the install prefix when the target is exported via
|
||||||
:command:`install(EXPORT)`, or when evaluated in
|
:command:`install(EXPORT)`, or when evaluated in the
|
||||||
:prop_tgt:`INSTALL_NAME_DIR`, and empty otherwise.
|
:prop_tgt:`INSTALL_NAME_DIR` property or the ``INSTALL_NAME_DIR`` argument of
|
||||||
|
:command:`install(RUNTIME_DEPENDENCY_SET)`, and empty otherwise.
|
||||||
|
|
||||||
Output-Related Expressions
|
Output-Related Expressions
|
||||||
--------------------------
|
--------------------------
|
||||||
|
9
Help/release/dev/install-runtime-dependencies.rst
Normal file
9
Help/release/dev/install-runtime-dependencies.rst
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
install-runtime-dependencies
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
* The :command:`install(TARGETS)` command gained new ``RUNTIME_DEPENDENCIES``
|
||||||
|
and ``RUNTIME_DEPENDENCY_SET`` arguments, which can be used to install
|
||||||
|
runtime dependencies using :command:`file(GET_RUNTIME_DEPENDENCIES)`.
|
||||||
|
* The :command:`install` command gained a new ``RUNTIME_DEPENDENCY_SET`` mode,
|
||||||
|
which can be used to install runtime dependencies using
|
||||||
|
:command:`file(GET_RUNTIME_DEPENDENCIES)`.
|
Reference in New Issue
Block a user