summaryrefslogtreecommitdiffstats
path: root/Help
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2015-10-12 14:29:44 (GMT)
committerBrad King <brad.king@kitware.com>2015-10-12 14:29:44 (GMT)
commite33fe7910fdf56816b3252e1933643d870f8f073 (patch)
treec3349c6b4c11eed201cce7f642159a8ef9327cc3 /Help
parent4df5c3d13163eaaadd1062f1fc45a3177972b21b (diff)
parent6556481eb8495a3c4f6870efc1b41b461f477bae (diff)
downloadCMake-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.rst6
-rw-r--r--Help/manual/cmake-buildsystem.7.rst7
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