summaryrefslogtreecommitdiff
path: root/3.8.2/doc/cmake/html/_sources/command/target_link_libraries.rst.txt
diff options
context:
space:
mode:
Diffstat (limited to '3.8.2/doc/cmake/html/_sources/command/target_link_libraries.rst.txt')
-rw-r--r--3.8.2/doc/cmake/html/_sources/command/target_link_libraries.rst.txt215
1 files changed, 0 insertions, 215 deletions
diff --git a/3.8.2/doc/cmake/html/_sources/command/target_link_libraries.rst.txt b/3.8.2/doc/cmake/html/_sources/command/target_link_libraries.rst.txt
deleted file mode 100644
index 30d69f2..0000000
--- a/3.8.2/doc/cmake/html/_sources/command/target_link_libraries.rst.txt
+++ /dev/null
@@ -1,215 +0,0 @@
-target_link_libraries
----------------------
-
-.. only:: html
-
- .. contents::
-
-Specify libraries or flags to use when linking a given target and/or
-its dependents. :ref:`Usage requirements <Target Usage Requirements>`
-from linked library targets will be propagated. Usage requirements
-of a target's dependencies affect compilation of its own sources.
-
-Overview
-^^^^^^^^
-
-This command has several signatures as detailed in subsections below.
-All of them have the general form::
-
- target_link_libraries(<target> ... <item>... ...)
-
-The named ``<target>`` must have been created in the current directory by
-a command such as :command:`add_executable` or :command:`add_library`.
-Repeated calls for the same ``<target>`` append items in the order called.
-Each ``<item>`` may be:
-
-* **A library target name**: The generated link line will have the
- full path to the linkable library file associated with the target.
- The buildsystem will have a dependency to re-link ``<target>`` if
- the library file changes.
-
- The named target must be created by :command:`add_library` within
- the project or as an :ref:`IMPORTED library <Imported Targets>`.
- If it is created within the project an ordering dependency will
- automatically be added in the build system to make sure the named
- library target is up-to-date before the ``<target>`` links.
-
- If an imported library has the :prop_tgt:`IMPORTED_NO_SONAME`
- target property set, CMake may ask the linker to search for
- the library instead of using the full path
- (e.g. ``/usr/lib/libfoo.so`` becomes ``-lfoo``).
-
-* **A full path to a library file**: The generated link line will
- normally preserve the full path to the file. The buildsystem will
- have a dependency to re-link ``<target>`` if the library file changes.
-
- There are some cases where CMake may ask the linker to search for
- the library (e.g. ``/usr/lib/libfoo.so`` becomes ``-lfoo``), such
- as when a shared library is detected to have no ``SONAME`` field.
- See policy :policy:`CMP0060` for discussion of another case.
-
- If the library file is in a Mac OSX framework, the ``Headers`` directory
- of the framework will also be processed as a
- :ref:`usage requirement <Target Usage Requirements>`. This has the same
- effect as passing the framework directory as an include directory.
-
- On :ref:`Visual Studio Generators` for VS 2010 and above, library files
- ending in ``.targets`` will be treated as MSBuild targets files and
- imported into generated project files. This is not supported by other
- generators.
-
-* **A plain library name**: The generated link line will ask the linker
- to search for the library (e.g. ``foo`` becomes ``-lfoo`` or ``foo.lib``).
-
-* **A link flag**: Item names starting with ``-``, but not ``-l`` or
- ``-framework``, are treated as linker flags. Note that such flags will
- be treated like any other library link item for purposes of transitive
- dependencies, so they are generally safe to specify only as private link
- items that will not propagate to dependents.
-
- Link flags specified here are inserted into the link command in the same
- place as the link libraries. This might not be correct, depending on
- the linker. Use the :prop_tgt:`LINK_FLAGS` target property to add link
- flags explicitly. The flags will then be placed at the toolchain-defined
- flag position in the link command.
-
-* A ``debug``, ``optimized``, or ``general`` keyword immediately followed
- by another ``<item>``. The item following such a keyword will be used
- only for the corresponding build configuration. The ``debug`` keyword
- corresponds to the ``Debug`` configuration (or to configurations named
- in the :prop_gbl:`DEBUG_CONFIGURATIONS` global property if it is set).
- The ``optimized`` keyword corresponds to all other configurations. The
- ``general`` keyword corresponds to all configurations, and is purely
- optional. Higher granularity may be achieved for per-configuration
- rules by creating and linking to
- :ref:`IMPORTED library targets <Imported Targets>`.
-
-Items containing ``::``, such as ``Foo::Bar``, are assumed to be
-:ref:`IMPORTED <Imported Targets>` or :ref:`ALIAS <Alias Targets>` library
-target names and will cause an error if no such target exists.
-See policy :policy:`CMP0028`.
-
-Arguments to ``target_link_libraries`` may use "generator expressions"
-with the syntax ``$<...>``. Note however, that generator expressions
-will not be used in OLD handling of :policy:`CMP0003` or :policy:`CMP0004`.
-See the :manual:`cmake-generator-expressions(7)` manual for available
-expressions. See the :manual:`cmake-buildsystem(7)` manual for more on
-defining buildsystem properties.
-
-Libraries for a Target and/or its Dependents
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-::
-
- target_link_libraries(<target>
- <PRIVATE|PUBLIC|INTERFACE> <item>...
- [<PRIVATE|PUBLIC|INTERFACE> <item>...]...)
-
-The ``PUBLIC``, ``PRIVATE`` and ``INTERFACE`` keywords can be used to
-specify both the link dependencies and the link interface in one command.
-Libraries and targets following ``PUBLIC`` are linked to, and are made
-part of the link interface. Libraries and targets following ``PRIVATE``
-are linked to, but are not made part of the link interface. Libraries
-following ``INTERFACE`` are appended to the link interface and are not
-used for linking ``<target>``.
-
-Libraries for both a Target and its Dependents
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-::
-
- target_link_libraries(<target> <item>...)
-
-Library dependencies are transitive by default with this signature.
-When this target is linked into another target then the libraries
-linked to this target will appear on the link line for the other
-target too. This transitive "link interface" is stored in the
-:prop_tgt:`INTERFACE_LINK_LIBRARIES` target property and may be overridden
-by setting the property directly. When :policy:`CMP0022` is not set to
-``NEW``, transitive linking is built in but may be overridden by the
-:prop_tgt:`LINK_INTERFACE_LIBRARIES` property. Calls to other signatures
-of this command may set the property making any libraries linked
-exclusively by this signature private.
-
-Libraries for a Target and/or its Dependents (Legacy)
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-::
-
- target_link_libraries(<target>
- <LINK_PRIVATE|LINK_PUBLIC> <lib>...
- [<LINK_PRIVATE|LINK_PUBLIC> <lib>...]...)
-
-The ``LINK_PUBLIC`` and ``LINK_PRIVATE`` modes can be used to specify both
-the link dependencies and the link interface in one command.
-
-This signature is for compatibility only. Prefer the ``PUBLIC`` or
-``PRIVATE`` keywords instead.
-
-Libraries and targets following ``LINK_PUBLIC`` are linked to, and are
-made part of the :prop_tgt:`INTERFACE_LINK_LIBRARIES`. If policy
-:policy:`CMP0022` is not ``NEW``, they are also made part of the
-:prop_tgt:`LINK_INTERFACE_LIBRARIES`. Libraries and targets following
-``LINK_PRIVATE`` are linked to, but are not made part of the
-:prop_tgt:`INTERFACE_LINK_LIBRARIES` (or :prop_tgt:`LINK_INTERFACE_LIBRARIES`).
-
-Libraries for Dependents Only (Legacy)
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-::
-
- target_link_libraries(<target> LINK_INTERFACE_LIBRARIES <item>...)
-
-The ``LINK_INTERFACE_LIBRARIES`` mode appends the libraries to the
-:prop_tgt:`INTERFACE_LINK_LIBRARIES` target property instead of using them
-for linking. If policy :policy:`CMP0022` is not ``NEW``, then this mode
-also appends libraries to the :prop_tgt:`LINK_INTERFACE_LIBRARIES` and its
-per-configuration equivalent.
-
-This signature is for compatibility only. Prefer the ``INTERFACE`` mode
-instead.
-
-Libraries specified as ``debug`` are wrapped in a generator expression to
-correspond to debug builds. If policy :policy:`CMP0022` is
-not ``NEW``, the libraries are also appended to the
-:prop_tgt:`LINK_INTERFACE_LIBRARIES_DEBUG <LINK_INTERFACE_LIBRARIES_<CONFIG>>`
-property (or to the properties corresponding to configurations listed in
-the :prop_gbl:`DEBUG_CONFIGURATIONS` global property if it is set).
-Libraries specified as ``optimized`` are appended to the
-:prop_tgt:`INTERFACE_LINK_LIBRARIES` property. If policy :policy:`CMP0022`
-is not ``NEW``, they are also appended to the
-:prop_tgt:`LINK_INTERFACE_LIBRARIES` property. Libraries specified as
-``general`` (or without any keyword) are treated as if specified for both
-``debug`` and ``optimized``.
-
-Cyclic Dependencies of Static Libraries
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The library dependency graph is normally acyclic (a DAG), but in the case
-of mutually-dependent ``STATIC`` libraries CMake allows the graph to
-contain cycles (strongly connected components). When another target links
-to one of the libraries, CMake repeats the entire connected component.
-For example, the code
-
-.. code-block:: cmake
-
- add_library(A STATIC a.c)
- add_library(B STATIC b.c)
- target_link_libraries(A B)
- target_link_libraries(B A)
- add_executable(main main.c)
- target_link_libraries(main A)
-
-links ``main`` to ``A B A B``. While one repetition is usually
-sufficient, pathological object file and symbol arrangements can require
-more. One may handle such cases by using the
-:prop_tgt:`LINK_INTERFACE_MULTIPLICITY` target property or by manually
-repeating the component in the last ``target_link_libraries`` call.
-However, if two archives are really so interdependent they should probably
-be combined into a single archive, perhaps by using :ref:`Object Libraries`.
-
-Creating Relocatable Packages
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. |INTERFACE_PROPERTY_LINK| replace:: :prop_tgt:`INTERFACE_LINK_LIBRARIES`
-.. include:: /include/INTERFACE_LINK_LIBRARIES_WARNING.txt