WINDOWS_EXPORT_ALL_SYMBOLS

在 3.4 版本中添加。

此属性仅在 Windows 上的 MS 兼容工具中实现。

启用此布尔属性以针对 Windows 上 SHARED 库(或具有 ENABLE_EXPORTS 的可执行文件)中的输入 .obj 文件,自动创建包含所有全局符号的模块定义 (.def) 文件。模块定义文件将传递到链接器,从而导致将所有符号从 .dll 中导出。对于全局数据符号,在针对 .dll 中的代码编译时,仍必须使用 __declspec(dllimport)。呼叫方会自动导出和导入所有其他函数符号。这通过减少使用显式 dllexport 标记的需要(即使是在 C++ 类中)简化了将项目移植到 Windows。

启用此属性后,也可以将零个或多个 .def 文件指定为目标的源文件。由这些文件命名的导出内容将与从对象文件中检测到的导出内容合并,以生成一个要传递到链接器的模块定义文件。这可以用来导出 .dll 中不在其任何对象文件中,但由链接器从依赖项(例如,msvcrt.lib)添加的符号。

如果在创建目标时设置了 CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS 变量的值,此属性将由此值初始化。