summaryrefslogtreecommitdiff
path: root/share/cmake-3.18/Help/policy/CMP0008.rst
blob: 18ede821c8dc05df53b85db49958226228649a75 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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 :ref:`Visual Studio Generators` IDE
and :generator:`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
|release| warns when the policy is not set and uses ``OLD`` behavior.  Use
the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.

.. include:: DEPRECATED.txt