Help: Improve DEBUG_CONFIGURATIONS documentation and usage

This adds a short example demonstrating how to set this property.
Additionally, a paragraph is added to the target_link_libraries() and
its debug/optimized keywords to mention that imported targets with
IMPORTED_CONFIGURATIONS property may provide better alternative for
linking.
This commit is contained in:
Peter Kokot 2025-03-15 14:13:50 +01:00
parent b5b55827aa
commit 99546ef425
No known key found for this signature in database
GPG Key ID: A94800907AA79B36
2 changed files with 33 additions and 8 deletions

View File

@ -127,11 +127,15 @@ Each ``<item>`` may be:
in the :prop_gbl:`DEBUG_CONFIGURATIONS` global property if it is set).
The ``optimized`` keyword corresponds to all other configurations. The
``general`` keyword corresponds to all configurations, and is purely
optional. Higher granularity may be achieved for per-configuration
rules by creating and linking to
:ref:`IMPORTED library targets <Imported Targets>`.
These keywords are interpreted immediately by this command and therefore
have no special meaning when produced by a generator expression.
optional. These keywords are interpreted immediately by this command and
therefore have no special meaning when produced by a generator expression.
Alternatively, generator expressions like :genex:`$<CONFIG>` provide finer
per-configuration linking of ``<item>``. For a more structured approach,
higher granularity can be achieved by creating and linking to
:ref:`IMPORTED library targets <Imported Targets>` with the
:prop_tgt:`IMPORTED_CONFIGURATIONS` property set, particularly in find
modules.
Items containing ``::``, such as ``Foo::Bar``, are assumed to be
:ref:`IMPORTED <Imported Targets>` or :ref:`ALIAS <Alias Targets>` library

View File

@ -1,13 +1,34 @@
DEBUG_CONFIGURATIONS
--------------------
Specify which configurations are for debugging.
This property specifies which :ref:`Build Configurations` are for debugging.
The value must be a semi-colon separated list of configuration names.
The value must be a :ref:`semicolon-separated list <CMake Language Lists>` of
build configuration names.
Currently this property is used only by the :command:`target_link_libraries`
command. Additional uses may be defined in the future.
This property must be set at the top level of the project and before
the first :command:`target_link_libraries` command invocation. If any entry in
the list does not match a valid configuration for the project the
the list does not match a valid configuration for the project, the
behavior is undefined.
By default, this property is **not set**.
Examples
^^^^^^^^
The following example adds a custom configuration to non-optimized debug
configurations while preserving any existing ones. If the project uses the
default ``Debug`` configuration, it should be included as well.
.. code-block:: cmake
set_property(GLOBAL APPEND PROPERTY DEBUG_CONFIGURATIONS Debug CustomBuild)
See Also
^^^^^^^^
* The :prop_tgt:`MAP_IMPORTED_CONFIG_<CONFIG>` target property, which maps build
configurations when linking to :ref:`Imported Targets` that have the
:prop_tgt:`IMPORTED_CONFIGURATIONS` property set.