utils.cmake 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. # utils.cmake
  2. # 定义一些其它工具函数
  3. # get_current_platform_lib_name <_VAR> <_IS_IS_SHREAD> <_LIB>
  4. # _VAR 用于存储内容的变量
  5. # _IS_IS_SHREAD 是否为共享库
  6. # _LIB 目标名称
  7. function(get_current_platform_lib_name _VAR _IS_SHREAD _LIB)
  8. set(_LIB_NAME "")
  9. if(WIN32)
  10. set(_LIB_NAME ${_LIB}.lib)
  11. elseif(UNIX AND NOT APPLE)
  12. if(${_IS_SHREAD})
  13. set(_LIB_NAME lib${_LIB}.so)
  14. else()
  15. set(_LIB_NAME lib${_LIB}.a)
  16. endif(${_IS_SHREAD})
  17. elseif(APPLE)
  18. if(${_IS_SHREAD})
  19. set(_LIB_NAME lib${_LIB}.dylib)
  20. else()
  21. set(_LIB_NAME lib${_LIB}.a)
  22. endif(${_IS_SHREAD})
  23. else()
  24. message("ERROR: Unknow current platform")
  25. set(_LIB_NAME ${_LIB})
  26. endif()
  27. message("[utils.cmake] get_current_platform_lib_name: ${_LIB}(${_LIB_NAME}) ")
  28. set(${_VAR} ${_LIB_NAME} PARENT_SCOPE)
  29. endfunction(get_current_platform_lib_name _VAR _IS_SHREAD _LIB)
  30. # 获取当前平台的 lib 名称
  31. # 在 Windows 中
  32. # 用于编译的静态库与动态库后缀相同: .lib
  33. # 并且不是 lib 开头
  34. # 在 Linux 中
  35. # 用于编译的静态库与动态库后缀分别是:.a 与 .so
  36. # 文件名称由 lib 开头
  37. # 在 MacOS 中
  38. # 用于编译的静态库与动态库后缀分别是:.a 与 .dylib
  39. # 文件名称由 lib 开头