|
@@ -1,79 +1,112 @@
|
|
|
|
|
|
|
|
|
-#SPDLOG日志库
|
|
|
+#SPDLOG日志库,Qt5使用1.14.1,Qt6使用1.15.1,不包含Qt则使用1.15.1
|
|
|
+#Qt5使用1.15.1会报错,Qt6使用1.14.1会报错,不知道为何
|
|
|
|
|
|
message(STATUS "***** Find spdlog Library *****")
|
|
|
|
|
|
-#寻找头文件
|
|
|
-# find_path(spdlog_INCLUDE_DIR
|
|
|
-# NAMES spdlog/logger.h
|
|
|
-# PATHS ${CMAKE_CURRENT_LIST_DIR}
|
|
|
-# NO_DEFAULT_PATH
|
|
|
-# )
|
|
|
+#设置版本号
|
|
|
+if(QT_VERSION_MAJOR EQUAL 5)
|
|
|
+ set(SPDLOG_V 1.14.1)
|
|
|
+elseif(QT_VERSION_MAJOR EQUAL 6)
|
|
|
+ set(SPDLOG_V 1.15.1)
|
|
|
+else()
|
|
|
+ set(SPDLOG_V 1.15.1)
|
|
|
+endif()
|
|
|
+
|
|
|
+#寻找头文件,现在需要区分Qt版本了,Qt5使用1.14.1,Qt6使用1.15.1,不包含Qt则使用1.15.1
|
|
|
unset(spdlog_INCLUDE_DIR CACHE)
|
|
|
-list(APPEND spdlog_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/include)
|
|
|
-list(APPEND spdlog_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/include/spdlog)
|
|
|
+unset(SPDLOG_INC_DIR CACHE)
|
|
|
+
|
|
|
+if(QT_VERSION_MAJOR EQUAL 5)
|
|
|
+ set(SPDLOG_INC_DIR ${CMAKE_CURRENT_LIST_DIR}/include_1.14.1)
|
|
|
+elseif(QT_VERSION_MAJOR EQUAL 6)
|
|
|
+ set(SPDLOG_INC_DIR ${CMAKE_CURRENT_LIST_DIR}/include_1.15.1)
|
|
|
+else()
|
|
|
+ set(SPDLOG_INC_DIR ${CMAKE_CURRENT_LIST_DIR}/include_1.15.1)
|
|
|
+endif()
|
|
|
+
|
|
|
+list(APPEND spdlog_INCLUDE_DIR ${SPDLOG_INC_DIR})
|
|
|
+list(APPEND spdlog_INCLUDE_DIR ${SPDLOG_INC_DIR}/spdlog)
|
|
|
#包含fmt头文件,使用fmt的时候包含fmt/bundled/format.h这样的完整目录
|
|
|
-list(APPEND spdlog_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/include/spdlog/fmt)
|
|
|
+list(APPEND spdlog_INCLUDE_DIR ${SPDLOG_INC_DIR}/spdlog/fmt)
|
|
|
|
|
|
|
|
|
|
|
|
unset(spdlog_LIBRARY CACHE)
|
|
|
unset(spdlog_STATIC_LIBRARY CACHE)
|
|
|
+unset(SPDLOG_LIB_DIR CACHE)
|
|
|
#查找库文件,需要判断操作系统,位数
|
|
|
if(CMAKE_SYSTEM_NAME MATCHES "Windows")
|
|
|
+ #GCC编译器
|
|
|
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
|
|
#64位
|
|
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
|
+ #Qt5版本
|
|
|
+ if(QT_VERSION_MAJOR EQUAL 5)
|
|
|
+ set(SPDLOG_LIB_DIR ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3)
|
|
|
+ #Qt6版本
|
|
|
+ elseif(QT_VERSION_MAJOR EQUAL 6)
|
|
|
+ set(SPDLOG_LIB_DIR ${CMAKE_CURRENT_LIST_DIR}/windows/gcc11.2)
|
|
|
+ #没有Qt版本
|
|
|
+ else()
|
|
|
+ set(SPDLOG_LIB_DIR ${CMAKE_CURRENT_LIST_DIR}/windows/gcc11.2)
|
|
|
+ endif()
|
|
|
+ #动态库
|
|
|
if(CMAKE_BUILD_TYPE MATCHES "Debug")
|
|
|
- list(APPEND spdlog_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3/libspdlogd.dll)
|
|
|
+ list(APPEND spdlog_LIBRARY ${SPDLOG_LIB_DIR}/libspdlogd.dll)
|
|
|
else()
|
|
|
- list(APPEND spdlog_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3/libspdlog.dll)
|
|
|
+ list(APPEND spdlog_LIBRARY ${SPDLOG_LIB_DIR}/libspdlog.dll)
|
|
|
endif()
|
|
|
+ #静态库
|
|
|
if(ENABLE_SPDLOG_STATIC_LIB)
|
|
|
if(CMAKE_BUILD_TYPE MATCHES "Debug")
|
|
|
- list(APPEND spdlog_STATIC_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3_static/libspdlogd.a)
|
|
|
+ list(APPEND spdlog_STATIC_LIBRARY ${SPDLOG_LIB_DIR}/libspdlogd.a)
|
|
|
else()
|
|
|
- list(APPEND spdlog_STATIC_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3_static/libspdlog.a)
|
|
|
+ list(APPEND spdlog_STATIC_LIBRARY ${SPDLOG_LIB_DIR}/libspdlog.a)
|
|
|
endif()
|
|
|
endif()
|
|
|
#32位
|
|
|
elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
|
|
+ set(SPDLOG_LIB_DIR ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3_32)
|
|
|
#动态库
|
|
|
if(CMAKE_BUILD_TYPE MATCHES "Debug")
|
|
|
- list(APPEND spdlog_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3_32/libspdlogd.dll)
|
|
|
+ list(APPEND spdlog_LIBRARY ${SPDLOG_LIB_DIR}/libspdlogd.dll)
|
|
|
else()
|
|
|
- list(APPEND spdlog_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3_32/libspdlog.dll)
|
|
|
+ list(APPEND spdlog_LIBRARY ${SPDLOG_LIB_DIR}/libspdlog.dll)
|
|
|
endif()
|
|
|
#静态库
|
|
|
if(ENABLE_SPDLOG_STATIC_LIB)
|
|
|
if(CMAKE_BUILD_TYPE MATCHES "Debug")
|
|
|
- list(APPEND spdlog_STATIC_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3_static_32/libspdlogd.a)
|
|
|
+ list(APPEND spdlog_STATIC_LIBRARY ${SPDLOG_LIB_DIR}/libspdlogd.a)
|
|
|
else()
|
|
|
- list(APPEND spdlog_STATIC_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3_static_32/libspdlog.a)
|
|
|
+ list(APPEND spdlog_STATIC_LIBRARY ${SPDLOG_LIB_DIR}/libspdlog.a)
|
|
|
endif()
|
|
|
endif()
|
|
|
endif()
|
|
|
+ #MSVC编译器
|
|
|
elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
|
|
+ set(SPDLOG_LIB_DIR ${CMAKE_CURRENT_LIST_DIR}/windows/msvc2022)
|
|
|
if(CMAKE_BUILD_TYPE MATCHES "Debug")
|
|
|
- list(APPEND spdlog_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/msvc2022/spdlogd.lib)
|
|
|
+ list(APPEND spdlog_LIBRARY ${SPDLOG_LIB_DIR}/spdlogd.lib)
|
|
|
else()
|
|
|
- list(APPEND spdlog_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/msvc2022/spdlog.lib)
|
|
|
+ list(APPEND spdlog_LIBRARY ${SPDLOG_LIB_DIR}/spdlog.lib)
|
|
|
endif()
|
|
|
endif()
|
|
|
#添加Linux版本
|
|
|
elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
|
|
+ set(SPDLOG_LIB_DIR ${CMAKE_CURRENT_LIST_DIR}/linux/gcc8.3)
|
|
|
if(CMAKE_BUILD_TYPE MATCHES "Debug")
|
|
|
- list(APPEND spdlog_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/linux/gcc8.3/libspdlog.so)
|
|
|
+ list(APPEND spdlog_LIBRARY ${SPDLOG_LIB_DIR}/libspdlogd.so)
|
|
|
else()
|
|
|
- list(APPEND spdlog_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/linux/gcc8.3/libspdlog.so)
|
|
|
+ list(APPEND spdlog_LIBRARY ${SPDLOG_LIB_DIR}/libspdlog.so)
|
|
|
endif()
|
|
|
list(APPEND spdlog_LIBRARY pthread)
|
|
|
if(ENABLE_SPDLOG_STATIC_LIB)
|
|
|
if(CMAKE_BUILD_TYPE MATCHES "Debug")
|
|
|
- list(APPEND spdlog_STATIC_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/linux/gcc8.3_static/libspdlogd.a)
|
|
|
+ list(APPEND spdlog_STATIC_LIBRARY ${SPDLOG_LIB_DIR}/libspdlogd.a)
|
|
|
else()
|
|
|
- list(APPEND spdlog_STATIC_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/linux/gcc8.3_static/libspdlog.a)
|
|
|
+ list(APPEND spdlog_STATIC_LIBRARY ${SPDLOG_LIB_DIR}/libspdlog.a)
|
|
|
endif()
|
|
|
#这里需要显式的链接依赖库,或者使用target_link_options(appname PRIVATE "-Wl,--copy-dt-needed-entries")来让gcc递归搜索依赖库
|
|
|
list(APPEND spdlog_STATIC_LIBRARY pthread)
|
|
@@ -98,7 +131,7 @@ endif()
|
|
|
|
|
|
if(spdlog_INCLUDE_DIR AND (spdlog_LIBRARY OR spdlog_STATIC_LIBRARY))
|
|
|
set(spdlog_FOUND TRUE)
|
|
|
- set(spdlog_VERSION 1.14.1)
|
|
|
+ set(spdlog_VERSION ${SPDLOG_V})
|
|
|
|
|
|
message(STATUS "如果需要使用静态库,定义“ ENABLE_SPDLOG_STATIC_LIB ”变量")
|
|
|
message(STATUS "include : spdlog_INCLUDE_DIR")
|