# WINDOWS_EXPORT_ALL_SYMBOLS

New in version 3.4.

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 `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 `CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS` variable if it is set when a target is created.