mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-06 14:19:59 -05:00
Merge topic 'doc-ENABLE_EXPORTS'
84ddeb8fa5Help: Clarify ENABLE_EXPORTS per-platform link behaviore29ccfcafbHelp: Simplify CMAKE_ENABLE_EXPORTS documentation Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3560
This commit is contained in:
@@ -7,16 +7,21 @@ Normally an executable does not export any symbols because it is the
|
||||
final program. It is possible for an executable to export symbols to
|
||||
be used by loadable modules. When this property is set to true CMake
|
||||
will allow other targets to "link" to the executable with the
|
||||
:command:`TARGET_LINK_LIBRARIES` command. On all platforms a target-level
|
||||
:command:`target_link_libraries` command. On all platforms a target-level
|
||||
dependency on the executable is created for targets that link to it.
|
||||
For DLL platforms an import library will be created for the exported
|
||||
symbols and then used for linking. All Windows-based systems
|
||||
including Cygwin are DLL platforms. For non-DLL platforms that
|
||||
require all symbols to be resolved at link time, such as macOS, the
|
||||
module will "link" to the executable using a flag like
|
||||
``-bundle_loader``. For other non-DLL platforms the link rule is simply
|
||||
ignored since the dynamic loader will automatically bind symbols when
|
||||
the module is loaded.
|
||||
Handling of the executable on the link lines of the loadable modules
|
||||
varies by platform:
|
||||
|
||||
* On Windows-based systems (including Cygwin) an "import library" is
|
||||
created along with the executable to list the exported symbols.
|
||||
Loadable modules link to the import library to get the symbols.
|
||||
|
||||
* On macOS, loadable modules link to the executable itself using the
|
||||
``-bundle_loader`` flag.
|
||||
|
||||
* On other platforms, loadable modules are simply linked without
|
||||
referencing the executable since the dynamic loader will
|
||||
automatically bind symbols when the module is loaded.
|
||||
|
||||
This property is initialized by the value of the variable
|
||||
:variable:`CMAKE_ENABLE_EXPORTS` if it is set when a target is created.
|
||||
|
||||
@@ -1,22 +1,8 @@
|
||||
CMAKE_ENABLE_EXPORTS
|
||||
--------------------
|
||||
|
||||
Specify whether an executable exports symbols for loadable modules.
|
||||
Specify whether executables export symbols for loadable modules.
|
||||
|
||||
Normally an executable does not export any symbols because it is the
|
||||
final program. It is possible for an executable to export symbols to
|
||||
be used by loadable modules. When this property is set to true CMake
|
||||
will allow other targets to ``link`` to the executable with the
|
||||
:command:`TARGET_LINK_LIBRARIES` command. On all platforms a target-level
|
||||
dependency on the executable is created for targets that link to it.
|
||||
For DLL platforms an import library will be created for the exported
|
||||
symbols and then used for linking. All Windows-based systems
|
||||
including Cygwin are DLL platforms. For non-DLL platforms that
|
||||
require all symbols to be resolved at link time, such as macOS, the
|
||||
module will ``link`` to the executable using a flag like
|
||||
``-bundle_loader``. For other non-DLL platforms the link rule is simply
|
||||
ignored since the dynamic loader will automatically bind symbols when
|
||||
the module is loaded.
|
||||
|
||||
This variable is used to initialize the target property
|
||||
:prop_tgt:`ENABLE_EXPORTS` for executable targets.
|
||||
This variable is used to initialize the :prop_tgt:`ENABLE_EXPORTS` target
|
||||
property for executable targets when they are created by calls to the
|
||||
:command:`add_executable` command. See the property documentation for details.
|
||||
|
||||
Reference in New Issue
Block a user