#SPDLOG日志库 message(STATUS "***** Find spdlog Library *****") #寻找头文件 # find_path(spdlog_INCLUDE_DIR # NAMES spdlog/logger.h # PATHS ${CMAKE_CURRENT_LIST_DIR} # NO_DEFAULT_PATH # ) 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) #包含fmt头文件,使用fmt的时候包含fmt/bundled/format.h这样的完整目录 list(APPEND spdlog_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/include/spdlog/fmt) unset(spdlog_LIBRARY CACHE) unset(spdlog_STATIC_LIBRARY CACHE) #查找库文件,需要判断操作系统,位数 if(CMAKE_SYSTEM_NAME MATCHES "Windows") if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") if(CMAKE_SIZEOF_VOID_P EQUAL 8) if(CMAKE_BUILD_TYPE MATCHES "Debug") list(APPEND spdlog_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3/libspdlog.dll) else() list(APPEND spdlog_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3/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/libspdlog.a) else() list(APPEND spdlog_STATIC_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3_static/libspdlog.a) endif() endif() elseif(CMAKE_SIZEOF_VOID_P EQUAL 4) # if(CMAKE_BUILD_TYPE MATCHES "Debug") # list(APPEND spdlog_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3_32/libspdlog.dll) # else() # list(APPEND spdlog_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3_32/libspdlog.dll) # endif() endif() elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") if(CMAKE_BUILD_TYPE MATCHES "Debug") list(APPEND spdlog_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/msvc2022/libspdlog.lib) else() list(APPEND spdlog_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/msvc2022/libspdlog.lib) endif() endif() #添加Linux版本 elseif(CMAKE_SYSTEM_NAME MATCHES "Linux") if(CMAKE_BUILD_TYPE MATCHES "Debug") list(APPEND spdlog_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/linux/gcc8.3/libspdlog.so) else() list(APPEND spdlog_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/linux/gcc8.3/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) else() list(APPEND spdlog_STATIC_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/linux/gcc8.3_static/libspdlog.a) endif() #这里需要显式的链接依赖库,或者使用target_link_options(appname PRIVATE "-Wl,--copy-dt-needed-entries")来让gcc递归搜索依赖库 list(APPEND spdlog_STATIC_LIBRARY pthread) endif() endif() #设置查找到后的变量 # if(ENABLE_SPDLOG_STATIC_LIB) # set(spdlog_LIBRARY ${spdlog_STATIC_LIBRARY}) # endif() # message(STATUS "spdlog_INCLUDE_DIR: ${spdlog_INCLUDE_DIR}") if(spdlog_INCLUDE_DIR AND spdlog_LIBRARY) set(spdlog_FOUND TRUE) set(spdlog_VERSION 1.14.1) else() set(spdlog_FOUND FALSE) endif() message(STATUS "如果需要使用静态库,定义“ ENABLE_SPDLOG_STATIC_LIB ”变量") if(ENABLE_SPDLOG_STATIC_LIB) message(STATUS "include : spdlog_INCLUDE_DIR") message(STATUS "Library : spdlog_LIBRARY") message(STATUS "Static Library : spdlog_STATIC_LIBRARY") else() message(STATUS "include : spdlog_INCLUDE_DIR") message(STATUS "Library : spdlog_LIBRARY") endif() message(STATUS "---------------------------------")