New in version 3.13.
Add link directories to a target.
target_link_directories(<target> [BEFORE] <INTERFACE|PUBLIC|PRIVATE> [items1...] [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
Specifies the paths in which the linker should search for libraries when linking a given target. Each item can be an absolute or relative path, with the latter being interpreted as relative to the current source directory. These items will be added to the link command.
<target> must have been created by a command such as
add_library() and must not be an
PRIVATE keywords are required to
specify the scope of the items that follow
PUBLIC items will populate the
LINK_DIRECTORIES property of
INTERFACE items will populate the
<target> (IMPORTED targets only
Each item specifies a link directory and will be converted to an absolute
path if necessary before adding it to the relevant property. Repeated
calls for the same
<target> append items in the order called.
BEFORE is specified, the content will be prepended to the relevant
property instead of being appended.
target_link_directories may use generator expressions
with the syntax
$<...>. See the
manual for available expressions. See the
for more on defining buildsystem properties.
This command is rarely necessary and should be avoided where there are
other choices. Prefer to pass full absolute paths to libraries where
possible, since this ensures the correct library will always be linked.
find_library() command provides the full path, which can
generally be used directly in calls to
Situations where a library search path may be needed include:
Project generators like Xcode where the user can switch target architecture at build time, but a full path to a library cannot be used because it only provides one architecture (i.e. it is not a universal binary).
Libraries may themselves have other private library dependencies that expect to be found via
RPATHmechanisms, but some linkers are not able to fully decode those paths (e.g. due to the presence of things like