target_sourcesΒΆ
New in version 3.1.
Add sources to a target.
target_sources(<target>
<INTERFACE|PUBLIC|PRIVATE> [items1...]
[<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
Specifies sources to use when building a target and/or its dependents.
The named <target> must have been created by a command such as
add_executable() or add_library() or
add_custom_target() and must not be an
ALIAS target.
Changed in version 3.13: Relative source file paths are interpreted as being relative to the current
source directory (i.e. CMAKE_CURRENT_SOURCE_DIR).
See policy CMP0076.
New in version 3.20: <target> can be a custom target.
The INTERFACE, PUBLIC and PRIVATE keywords are required to
specify the scope of the items following them. PRIVATE and PUBLIC
items will populate the SOURCES property of
<target>, which are used when building the target itself.
PUBLIC and INTERFACE items will populate the
INTERFACE_SOURCES property of <target>, which are used
when building dependents.
The following arguments specify sources. Repeated calls for the same
<target> append items in the order called. The targets created by
add_custom_target() can only have PRIVATE scope.
New in version 3.3: Allow exporting targets with INTERFACE_SOURCES.
New in version 3.11: Allow setting INTERFACE items on IMPORTED targets.
Arguments to target_sources may use "generator expressions"
with the syntax $<...>. See the cmake-generator-expressions(7)
manual for available expressions. See the cmake-buildsystem(7)
manual for more on defining buildsystem properties.