CMP0008ΒΆ
Libraries linked by full-path must have a valid library file name.
In CMake 2.4 and below it is possible to write code like
target_link_libraries(myexe /full/path/to/somelib)
where somelib
is supposed to be a valid library file name such as
libsomelib.a
or somelib.lib
. For Makefile generators this
produces an error at build time because the dependency on the full
path cannot be found. For Visual Studio Generators IDE
and Xcode
generators this used to
work by accident because CMake would always split off the library
directory and ask the linker to search for the library by name
(-lsomelib
or somelib.lib
). Despite the failure with Makefiles, some
projects have code like this and build only with Visual Studio and/or Xcode.
This version of CMake prefers to pass the full path directly to the
native build tool, which will fail in this case because it does not
name a valid library file.
This policy determines what to do with full paths that do not appear
to name a valid library file. The OLD
behavior for this policy is to
split the library name from the path and ask the linker to search for
it. The NEW
behavior for this policy is to trust the given path and
pass it directly to the native build tool unchanged.
This policy was introduced in CMake version 2.6.1. CMake version
3.26.6 warns when the policy is not set and uses OLD
behavior. Use
the cmake_policy()
command to set it to OLD
or NEW
explicitly.
Note
The OLD
behavior of a policy is
deprecated by definition
and may be removed in a future version of CMake.