Kaynağa Gözat

Help: Improve documentation of project SPDX_LICENSE

Currently, CMake allows specifying a license (`SPDX_LICENSE`) for both
projects and targets, which is largely motivated by CPS export. The
design of CPS is geared toward components (targets) only expressing an
explicit license when that component's license differs from the license
that applies to the package as a whole (or, at least, the license
generally used by the package's software components). Accordingly, the
project license is not used to initialize the `SPDX_LICENSE` target
property at export time. This, however, was not documented previously.

Add a note explaining this to the `SPDX_LICENSE` option of the `project`
command.

Fixes: #27295
Matthew Woehlke 3 ay önce
ebeveyn
işleme
ebf0a359ad
1 değiştirilmiş dosya ile 13 ekleme ve 2 silme
  1. 13 2
      Help/command/project.rst

+ 13 - 2
Help/command/project.rst

@@ -124,6 +124,17 @@ The options are:
   See the :prop_tgt:`SPDX_LICENSE` property for specifying the license(s) on
   See the :prop_tgt:`SPDX_LICENSE` property for specifying the license(s) on
   individual software artifacts.
   individual software artifacts.
 
 
+  .. note::
+    The project license is *not* used to initialize the
+    :prop_tgt:`SPDX_LICENSE` property of individual targets.  This allows the
+    package license and default component license, which are specified when
+    exporting package information, to be meaningful.  Only |CPS| exports make
+    use of this information.
+
+    The project license *is* inherited as the package license in some cases.
+    Refer to the ``PROJECT`` option and related documentation of the
+    :command:`export` and :command:`install` commands for more information.
+
 .. _SPDX: https://spdx.dev/
 .. _SPDX: https://spdx.dev/
 .. |SPDX| replace:: System Package Data Exchange
 .. |SPDX| replace:: System Package Data Exchange
 
 
@@ -179,8 +190,6 @@ intended for use as default values in package metadata and documentation.
 The :command:`export` and :command:`install` commands use these accordingly
 The :command:`export` and :command:`install` commands use these accordingly
 when generating |CPS| package descriptions.
 when generating |CPS| package descriptions.
 
 
-.. |CPS| replace:: Common Package Specification
-
 .. _`Code Injection`:
 .. _`Code Injection`:
 
 
 Code Injection
 Code Injection
@@ -249,3 +258,5 @@ call exists, CMake will issue a warning and pretend there is a
   other commands whose behavior they may affect and for this reason the
   other commands whose behavior they may affect and for this reason the
   ``project()`` command will issue a warning if this order is not kept.
   ``project()`` command will issue a warning if this order is not kept.
   See also policy :policy:`CMP0000`.
   See also policy :policy:`CMP0000`.
+
+.. |CPS| replace:: Common Package Specification