#fmt格式化库

message(STATUS "***** Find fmt Library *****")

#寻找头文件
unset(fmt_INCLUDE_DIR CACHE)
# find_path(fmt_INCLUDE_DIR
#     NAMES fmt/base.h
#     PATHS ${CMAKE_CURRENT_LIST_DIR}/include
#     NO_DEFAULT_PATH
# )
list(APPEND fmt_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/include)
list(APPEND fmt_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/include/fmt)


unset(fmt_LIBRARY CACHE)
unset(fmt_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 fmt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3/libfmt.dll)
            else()
                list(APPEND fmt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3/libfmt.dll)
            endif()
            if(ENABLE_SPDLOG_STATIC_LIB)
                if(CMAKE_BUILD_TYPE MATCHES "Debug")
                    list(APPEND fmt_STATIC_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3_static/libfmt.a)
                else()
                    list(APPEND fmt_STATIC_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3_static/libfmt.a)
                endif()
            endif()
            
        elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
            if(CMAKE_BUILD_TYPE MATCHES "Debug")
                list(APPEND fmt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3_32/libfmt.dll)
            else()
                list(APPEND fmt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3_32/libfmt.dll)
            endif()
        endif()
    elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
        if(CMAKE_BUILD_TYPE MATCHES "Debug")
            list(APPEND fmt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/msvc2022/libfmt.lib)
        else()
            list(APPEND fmt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/msvc2022/libfmt.lib)
        endif()
    endif()
#添加Linux版本
elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
    if(CMAKE_BUILD_TYPE MATCHES "Debug")
        list(APPEND fmt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/linux/gcc8.3/libfmt.so)
    else()
        list(APPEND fmt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/linux/gcc8.3/libfmt.so)
    endif()
    if(ENABLE_SPDLOG_STATIC_LIB)
        if(CMAKE_BUILD_TYPE MATCHES "Debug")
            list(APPEND fmt_STATIC_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/linux/gcc8.3_static/libfmt.a)
        else()
            list(APPEND fmt_STATIC_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/linux/gcc8.3_static/libfmt.a)
        endif()
    endif()
endif()

#设置查找到后的变量
# if(ENABLE_SPDLOG_STATIC_LIB)
#     set(fmt_LIBRARY ${fmt_STATIC_LIBRARY})
# endif()

if(fmt_INCLUDE_DIR AND fmt_LIBRARY)
    set(fmt_FOUND TRUE)
    set(fmt_VERSION 11.0.1)
else()
    set(fmt_FOUND FALSE)
endif()

if(ENABLE_SPDLOG_STATIC_LIB)
    message(STATUS "include : fmt_INCLUDE_DIR")
    message(STATUS "Library : fmt_LIBRARY")
    message(STATUS "Static Library : fmt_STATIC_LIBRARY")
else()
    message(STATUS "include : fmt_INCLUDE_DIR")
    message(STATUS "Library : fmt_LIBRARY")
endif()

message(STATUS "---------------------------------")