FindLHQLog.cmake 3.7 KB

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