From c42630ee62df80e649211e99c510cab7ac28fc0b Mon Sep 17 00:00:00 2001 From: Robert Maynard Date: Tue, 11 Apr 2023 15:49:52 -0400 Subject: cmGeneratorExpressionNode: implement `COMPILE_ONLY` genex This generator expression is the inverse of `LINK_ONLY` and only coveys usage requirements for the purposes of compilation. Its intended use is to avoid needing to export targets that do not have link usage requirements (e.g., header-only libraries) when used by another target. See: #15415 --- Help/manual/cmake-generator-expressions.7.rst | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'Help') diff --git a/Help/manual/cmake-generator-expressions.7.rst b/Help/manual/cmake-generator-expressions.7.rst index 186a9d25f9..da7df70fa2 100644 --- a/Help/manual/cmake-generator-expressions.7.rst +++ b/Help/manual/cmake-generator-expressions.7.rst @@ -966,15 +966,18 @@ Compile Context .. versionadded:: 3.27 - Content of ``...``, except while collecting :ref:`Target Usage Requirements`, - in which case it is the empty string. This is intended for use in an - :prop_tgt:`INTERFACE_LINK_LIBRARIES` target property, typically populated - via the :command:`target_link_libraries` command, to specify private - compilation requirements without other usage requirements. + Content of ``...``, when collecting :ref:`Target Usage Requirements`, + otherwise it is the empty string. This is intended for use in an + :prop_tgt:`INTERFACE_LINK_LIBRARIES` and :prop_tgt:`LINK_LIBRARIES` target + properties, typically populated via the :command:`target_link_libraries` command. + Provides compilation usage requirements without any linking requirements. Use cases include header-only usage where all usages are known to not have linking requirements (e.g., all-``inline`` or C++ template libraries). + Note that for proper evaluation of this expression requires policy :policy:`CMP0099` + to be set to `NEW`. + Linker Language And ID ^^^^^^^^^^^^^^^^^^^^^^ -- cgit v1.2.1