CMake添加-Dlibname_EXPORTS编译定义

Bar*_*adé 6 cmake

只需编译目标时,CMake会自动将以下编译定义添加到所有源代码文件中:

-Dlibname_EXPORTS
Run Code Online (Sandbox Code Playgroud)

为什么要这样做,如何禁用它?

max*_*int 11

cmake <libname>_EXPORTS仅为共享库添加宏.在Windows DLL中导出API时很有用.

#if defined(_WINDOWS) && defined(testlib_EXPORTS)
#   define API_DLL extern "C" __declspec(dllexport)
#else
#   define API_DLL
#endif

API_DLL void foo();
Run Code Online (Sandbox Code Playgroud)

可以通过将DEFINE_SYMBOLtarget 的属性设置为空来禁用它.

# disable the <libname>_EXPORTS
set_target_properties(sharedlib
  PROPERTIES
  DEFINE_SYMBOL ""
  )
Run Code Online (Sandbox Code Playgroud)

参考

  • 我怎样才能禁用这种行为? (2认同)