此属性仅适用于 Windows 上的 MS 兼容工具。
启用此布尔属性以自动创建模块定义 (
.def
) 文件,其中包含在输入``.obj`` 文件中找到的所有全局符号,用于``SHARED`` 库(或带有 :prop_tgt:` 的可执行文件) ENABLE_EXPORTS`) 在 Windows 上。模块定义文件将传递给链接器,导致所有符号从 .dll 中导出。对于全局
data
符号,在针对 .dll 中的代码进行编译时,仍必须使用 __declspec(dllimport) 。所有其他函数符号将由调用者自动导出和导入。这通过减少对显式
dllexport
标记的需要简化了将项目移植到 Windows,即使在
C++
类中也是如此。
启用此属性后,也可以将零个或多个
.def
文件指定为目标的源文件。由这些文件命名的导出将与从目标文件中检测到的导出合并,以生成要传递给链接器的单个模块定义文件。这可用于从
.dll
中导出符号,这些符号不在其任何目标文件中,但由链接器从依赖项中添加(例如
msvcrt.lib
)。
如果在创建目标时设置了此属性,则该属性由 CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS 变量的值初始化。