File: CMP0008.rst

package info (click to toggle)
cmake 4.2.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 152,336 kB
  • sloc: ansic: 403,896; cpp: 303,920; sh: 4,105; python: 3,583; yacc: 3,106; lex: 1,279; f90: 538; asm: 471; lisp: 375; cs: 270; java: 266; fortran: 239; objc: 215; perl: 213; xml: 198; makefile: 111; javascript: 83; pascal: 63; tcl: 55; php: 25; ruby: 22
file content (36 lines) | stat: -rw-r--r-- 1,545 bytes parent folder | download | duplicates (2)
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
36
CMP0008
-------

.. |REMOVED_IN_CMAKE_VERSION| replace:: 4.0
.. include:: include/REMOVED_PROLOGUE.rst

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

.. code-block:: cmake

  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.

.. |INTRODUCED_IN_CMAKE_VERSION| replace:: 2.6.1
.. |WARNED_OR_DID_NOT_WARN| replace:: warned
.. include:: include/REMOVED_EPILOGUE.rst