cmake_minimum_required(VERSION 4.0.2)
project(FeatherLog)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED True)

set(CMAKE_BINARY_DIR "out")

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/shared")

# 定义源文件
set(${PROJECT_NAME}_SOURCES
        include/log_manager.hpp
        include/log_outputter.hpp
        include/logger.hpp
        include/log_formatter.hpp
        include/log_level.hpp
        include/log_message.hpp
        src/featherlog/log_manager.cpp)

# 生成静态库
add_library(${PROJECT_NAME}_static STATIC ${${PROJECT_NAME}_SOURCES})
target_include_directories(${PROJECT_NAME}_static PUBLIC include)
set_target_properties(${PROJECT_NAME}_static PROPERTIES
        OUTPUT_NAME ${PROJECT_NAME}
        PREFIX lib)

add_compile_definitions(FLOG_DLL_MODE)
add_compile_definitions(FLOG_BUILDING_DLL)

# 生成动态库
add_library(${PROJECT_NAME}_shared SHARED ${${PROJECT_NAME}_SOURCES})
target_include_directories(${PROJECT_NAME}_shared PUBLIC include)
set_target_properties(${PROJECT_NAME}_shared PROPERTIES
        OUTPUT_NAME ${PROJECT_NAME}
        PREFIX lib)

include(CTest)
enable_testing()
