【发布时间】:2017-06-15 21:11:30
【问题描述】:
我见过很多MSVC环境下的c++头文件是这样的:
#ifdef somelib_EXPORTS
#define DLLEXPORTS __declspec(dllexport)
#else
#define DLLEXPORTS __declspec(dllimport)
#endif
<libname>_EXPORTS 约定从何而来?
它是 Visual Studio 的默认宏吗?还是由 CMake 生成的?
我找不到有关此约定的任何文档。
【问题讨论】:
-
它可能是由 Visual Studio 附带的默认项目模板生成的。但这只是惯例——没有其他意义。您可以使用任何您想要的名称。更一般地查看:stackoverflow.com/questions/8863193/…
-
与 CMake 无关,这个约定在它存在之前就已经在使用了。
-
CMake文档说CMake的默认宏是LIBNAME_EXPORTcmake.org/cmake/help/v3.0/module/GenerateExportHeader.html 但是很容易更改默认值,否则库可能会在不使用 GenerateExportHeader 的情况下生成类似的标头。
标签: c++ visual-studio dll cmake