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.
© 2000–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.21/command/target_sources.html