FindLHQLog.cmake 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #查找LHQLog库
  2. message(STATUS "===== FindLHQLog.cmake =====")
  3. #查找头文件
  4. unset(INCLUDE_DIR CACHE)
  5. find_path(INCLUDE_DIR
  6. NAMES LHQLog.h
  7. PATHS ${CMAKE_CURRENT_LIST_DIR}/inc
  8. NO_DEFAULT_PATH
  9. )
  10. list(APPEND LHQLog_INCLUDE_DIRS ${INCLUDE_DIR})
  11. #查找源文件
  12. unset(SOURCE_DIR CACHE)
  13. find_path(SOURCE_DIR
  14. NAMES LHQLog.cpp
  15. PATHS ${CMAKE_CURRENT_LIST_DIR}/src
  16. NO_DEFAULT_PATH
  17. )
  18. list(APPEND LHQLog_SOURCE_DIRS ${SOURCE_DIR})
  19. #查找库文件,在这里区分平台,Debug和Release,32位和64位
  20. unset(LIBRARY_DIR CACHE)
  21. if(CMAKE_SYSTEM_NAME MATCHES "Windows")
  22. #64位
  23. if(CMAKE_SIZEOF_VOID_P MATCHES 8)
  24. if(CMAKE_BUILD_TYPE MATCHES "Debug")
  25. find_library(LIBRARY_DIR
  26. NAMES LHQLog
  27. PATHS ${CMAKE_CURRENT_LIST_DIR}/lib/MinGW_64/debug
  28. NO_DEFAULT_PATH
  29. )
  30. else()
  31. find_library(LIBRARY_DIR
  32. NAMES LHQLog
  33. PATHS ${CMAKE_CURRENT_LIST_DIR}/lib/MinGW_64/release
  34. NO_DEFAULT_PATH
  35. )
  36. endif()
  37. #32位
  38. elseif(CMAKE_SIZEOF_VOID_P MATCHES 4)
  39. if(CMAKE_BUILD_TYPE MATCHES "Debug")
  40. find_library(LIBRARY_DIR
  41. NAMES LHQLog
  42. PATHS ${CMAKE_CURRENT_LIST_DIR}/lib/MinGW_32/debug
  43. NO_DEFAULT_PATH
  44. )
  45. else()
  46. find_library(LIBRARY_DIR
  47. NAMES LHQLog
  48. PATHS ${CMAKE_CURRENT_LIST_DIR}/lib/MinGW_32/release
  49. NO_DEFAULT_PATH
  50. )
  51. endif()
  52. endif()
  53. #Linux
  54. endif(CMAKE_SYSTEM_NAME MATCHES "Linux")
  55. find_library(LIBRARY_DIR
  56. NAMES LHQLog
  57. PATHS ${CMAKE_CURRENT_LIST_DIR}/lib/uos_x64/release
  58. NO_DEFAULT_PATH
  59. )
  60. endif()
  61. list(APPEND LHQLog_LIBRARY ${LIBRARY_DIR})
  62. #设置变量
  63. if(LHQLog_INCLUDE_DIRS AND LHQLog_SOURCE_DIRS AND LHQLog_LIBRARY)
  64. set(LHQLog_FOUND TRUE)
  65. # CACHE命令用于定义一个名为LHQLog_INCLUDE_DIRS的缓存变量。这个变量用于存储LHQLog的包含目录路径。
  66. # 通过将其定义为缓存变量,用户可以在CMake配置过程中通过命令行或图形界面设置该变量的值。CACHE INTERNAL部分
  67. # 指定了缓存变量的类型。在这种情况下,INTERNAL表示该变量只能在CMake脚本内部使用,而不能被外部访问或修改。
  68. # 通过使用缓存变量,可以使CMake配置更加灵活和可配置。用户可以根据其特定的需求设置缓存变量的值,而不需要修改
  69. # CMake脚本本身。这对于构建可定制的软件项目非常有用。
  70. set(LHQLog_INCLUDE_DIRS ${LHQLog_INCLUDE_DIRS} CACHE INTERNAL "LHQLog include directories")
  71. set(LHQLog_SOURCE_DIRS ${LHQLog_SOURCE_DIRS} CACHE INTERNAL "LHQLog source directories")
  72. set(LHQLog_LIBRARY ${LHQLog_LIBRARY} CACHE INTERNAL "LHQLog library")
  73. else()
  74. set(LHQLog_FOUND FALSE)
  75. endif()