blob: 1688ef7063e10e40c12af946745ac4015ec4d907 [file] [log] [blame]
SOURCES
-------
This specifies the list of paths to source files for the target.
The following commands all set or add to the ``SOURCES`` target property
and are the usual way to manipulate it:
* :command:`add_executable`
* :command:`add_library`
* :command:`add_custom_target`
* :command:`target_sources`
Contents of ``SOURCES`` may use
:manual:`generator expressions <cmake-generator-expressions(7)>`.
If a path starts with a generator expression, it is expected to
evaluate to an absolute path. Not doing so is considered undefined behavior.
Paths that are for files generated by the build will be treated
as relative to the build directory of the target, if the path is not
already specified as an absolute path. Note that whether a file is seen as
generated may be affected by policies :policy:`CMP0118` and :policy:`CMP0163`.
If a path does not start with a generator expression, is not an
absolute path and is not a generated file, it will be treated as relative to
the location selected by the first of the following that matches:
* If a file by the specified path exists relative to the target's source
directory, use that file.
* If policy :policy:`CMP0115` is not set to ``NEW``, try appending each
known source file extension to the path and check if that exists
relative to the target's source directory.
* Repeat the above two steps, this time relative to the target's binary
directory instead.
Note that the above decisions are made at generation time, not build time.
See the :manual:`cmake-buildsystem(7)` manual for more on defining
buildsystem properties.