Merge topic 'doc-clarify-shared-lib'
6556481e
Help: Document that SHARED libraries must export a symbol (#15775)
This commit is contained in:
commit
b6dcf6815b
|
@ -36,6 +36,12 @@ property is set to ``ON`` automatically.
|
|||
A ``SHARED`` library may be marked with the :prop_tgt:`FRAMEWORK`
|
||||
target property to create an OS X Framework.
|
||||
|
||||
If a library does not export any symbols, it must not be declared as a
|
||||
``SHARED`` library. For example, a Windows resource DLL or a managed C++/CLI
|
||||
DLL that exports no unmanaged symbols would need to be a ``MODULE`` library.
|
||||
This is because CMake expects a ``SHARED`` library to always have an
|
||||
associated import library on Windows.
|
||||
|
||||
By default the library file will be created in the build tree directory
|
||||
corresponding to the source tree directory in which the command was
|
||||
invoked. See documentation of the :prop_tgt:`ARCHIVE_OUTPUT_DIRECTORY`,
|
||||
|
|
|
@ -80,6 +80,10 @@ regardless of the library type. The ``MODULE`` library type is
|
|||
dissimilar in that it is generally not linked to -- it is not used in
|
||||
the right-hand-side of the :command:`target_link_libraries` command.
|
||||
It is a type which is loaded as a plugin using runtime techniques.
|
||||
If the library does not export any unmanaged symbols (e.g. Windows
|
||||
resource DLL, C++/CLI DLL), it is required that the library not be a
|
||||
``SHARED`` library because CMake expects ``SHARED`` libraries to export
|
||||
at least one symbol.
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
|
@ -781,7 +785,8 @@ An *archive* output artifact of a buildsystem target may be:
|
|||
|
||||
* On DLL platforms: the import library file (e.g. ``.lib``) of a shared
|
||||
library target created by the :command:`add_library` command
|
||||
with the ``SHARED`` option.
|
||||
with the ``SHARED`` option. This file is only guaranteed to exist if
|
||||
the library exports at least one unmanaged symbol.
|
||||
|
||||
* On DLL platforms: the import library file (e.g. ``.lib``) of an
|
||||
executable target created by the :command:`add_executable` command
|
||||
|
|
Loading…
Reference in New Issue