Add directories in which the linker will look for libraries.
link_directories([AFTER|BEFORE] directory1 [directory2 ...])
Adds the paths in which the linker should search for libraries.
Relative paths given to this command are interpreted as relative to
the current source directory, see
The command will apply only to targets created after it is called.
New in version 3.13: The directories are added to the
property for the current
CMakeLists.txt file, converting relative
paths to absolute as needed. See the
manual for more on defining buildsystem properties.
New in version 3.13: By default the directories specified are appended onto the current list of
directories. This default behavior can be changed by setting
ON. By using
BEFORE explicitly, you can select between appending and
prepending, independent of the default.
New in version 3.13: Arguments to
link_directories may use "generator expressions" with
the syntax "$<...>". See the
manual for available expressions.
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
RPATH mechanisms, but some linkers
are not able to fully decode those paths (e.g. due to the presence
of things like
If a library search path must be provided, prefer to localize the effect
where possible by using the
link_directories(). The target-specific command can also
control how the search directories propagate to other dependent targets.