diff options
author | Brad King <brad.king@kitware.com> | 2015-10-12 14:29:44 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2015-10-12 14:29:44 (GMT) |
commit | e33fe7910fdf56816b3252e1933643d870f8f073 (patch) | |
tree | c3349c6b4c11eed201cce7f642159a8ef9327cc3 /Help | |
parent | 4df5c3d13163eaaadd1062f1fc45a3177972b21b (diff) | |
parent | 6556481eb8495a3c4f6870efc1b41b461f477bae (diff) | |
download | CMake-e33fe7910fdf56816b3252e1933643d870f8f073.zip CMake-e33fe7910fdf56816b3252e1933643d870f8f073.tar.gz CMake-e33fe7910fdf56816b3252e1933643d870f8f073.tar.bz2 |
Merge branch 'doc-clarify-shared-lib' into release
Diffstat (limited to 'Help')
-rw-r--r-- | Help/command/add_library.rst | 6 | ||||
-rw-r--r-- | Help/manual/cmake-buildsystem.7.rst | 7 |
2 files changed, 12 insertions, 1 deletions
diff --git a/Help/command/add_library.rst b/Help/command/add_library.rst index fe7735c..5033e18 100644 --- a/Help/command/add_library.rst +++ b/Help/command/add_library.rst @@ -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`, diff --git a/Help/manual/cmake-buildsystem.7.rst b/Help/manual/cmake-buildsystem.7.rst index 357aae9..bc633e6 100644 --- a/Help/manual/cmake-buildsystem.7.rst +++ b/Help/manual/cmake-buildsystem.7.rst @@ -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 |