if(WIN32)
    if(DEFINED ENV{BOOST_ROOT})
        set(BOOST_ROOT $ENV{BOOST_ROOT})
    endif()

    set(Boost_USE_STATIC_LIBS        ON)
    set(Boost_USE_MULTITHREADED      ON)
    set(Boost_USE_STATIC_RUNTIME     OFF)
endif()

set(Boost_NO_WARN_NEW_VERSIONS ON)
set(BOOST_REQUIRED_VERSION 1.87)

find_package(Boost ${BOOST_REQUIRED_VERSION} REQUIRED COMPONENTS
        system
        filesystem
        program_options
        iostreams
        regex
        random
)

if(NOT Boost_FOUND)
    message(FATAL_ERROR "Boost not found! 请确认 BOOST_ROOT 环境变量是否正确设置。")
endif()

# 创建一个 INTERFACE 库，封装 Boost 相关设置
add_library(boost INTERFACE)

# 使用 Boost 的 imported targets 链接各个组件，
# 这样其它目标在链接 boost 时会自动获得对应组件库的链接信息
target_link_libraries(boost
        INTERFACE
        ${Boost_LIBRARIES}
)

# 指定 Boost 的包含目录
target_include_directories(boost
        INTERFACE
        ${Boost_INCLUDE_DIRS}
)

# 定义一些编译选项，避免自动链接某些库
target_compile_definitions(boost
        INTERFACE
        -DBOOST_DATE_TIME_NO_LIB
        -DBOOST_REGEX_NO_LIB
        -DBOOST_CHRONO_NO_LIB
        -DBOOST_SERIALIZATION_NO_LIB
        -DBOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE
        -DBOOST_ASIO_NO_DEPRECATED
        -DBOOST_SYSTEM_USE_UTF8
        -DBOOST_BIND_NO_PLACEHOLDERS
)
