mirror of
https://github.com/reactos/CMake.git
synced 2025-02-09 05:16:07 +00:00
![Brad King](/assets/img/avatar_default.png)
The `WINDOWS_EXPORT_ALL_SYMBOLS` target property exports all symbols found in object files explicitly given to the linker. However, the linker may also find additional symbols in dependencies and copy them into the linked binary (e.g. from `msvcrt.lib`). Provide a way to export an explicit list of such symbols by adding a `.def` file as a source file. Fixes: #16473
27 lines
1.3 KiB
ReStructuredText
27 lines
1.3 KiB
ReStructuredText
WINDOWS_EXPORT_ALL_SYMBOLS
|
|
--------------------------
|
|
|
|
This property is implemented only for MS-compatible tools on Windows.
|
|
|
|
Enable this boolean property to automatically create a module definition
|
|
(``.def``) file with all global symbols found in the input ``.obj`` files
|
|
for a ``SHARED`` library (or executable with :prop_tgt:`ENABLE_EXPORTS`)
|
|
on Windows. The module definition file will be passed to the linker
|
|
causing all symbols to be exported from the ``.dll``.
|
|
For global *data* symbols, ``__declspec(dllimport)`` must still be used when
|
|
compiling against the code in the ``.dll``. All other function symbols will
|
|
be automatically exported and imported by callers. This simplifies porting
|
|
projects to Windows by reducing the need for explicit ``dllexport`` markup,
|
|
even in ``C++`` classes.
|
|
|
|
When this property is enabled, zero or more ``.def`` files may also be
|
|
specified as source files of the target. The exports named by these files
|
|
will be merged with those detected from the object files to generate a
|
|
single module definition file to be passed to the linker. This can be
|
|
used to export symbols from a ``.dll`` that are not in any of its object
|
|
files but are added by the linker from dependencies (e.g. ``msvcrt.lib``).
|
|
|
|
This property is initialized by the value of
|
|
the :variable:`CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS` variable if it is set
|
|
when a target is created.
|