INTERFACE_SOURCES
-----------------

.. versionadded:: 4.4

List of interface sources to compile into consuming targets.
The :command:`target_sources` command sets or adds to the ``INTERFACE_SOURCES``
file set property for the file sets defined with the ``PUBLIC`` or
``INTERFACE`` keyword and is the usual way to manipulate it.

Contents of ``INTERFACE_SOURCES`` may use
:manual:`generator expressions <cmake-generator-expressions(7)>`.

Each file must be in one of the base directories, or a subdirectory of one of
the base directories.

If relative paths are specified, they are considered relative to the target's
source directory.

The following behavior applies for the :prop_fs:`SOURCES` and
``INTERFACE_SOURCES`` file set properties, dependent on the value of the
:prop_fs:`SCOPE` file set property:

``PRIVATE``
  Only the :prop_fs:`SOURCES` property can be set. Any change to the
  ``INTERFACE_SOURCES`` property will be ignored.

``PUBLIC``
  :prop_fs:`SOURCES` and ``INTERFACE_SOURCES`` properties will always have the
  same content.

``INTERFACE``
  Only the ``INTERFACE_SOURCES`` property can be set. Any change to the
  :prop_fs:`SOURCES` property will be ignored.
