cmake_minimum_required(VERSION 3.10.0)
project(BetterSTL VERSION 0.1.0 LANGUAGES C CXX)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

# 定义源文件
set(BETTERSTL_SOURCES
        src/big_integer.cpp
        src/big_decimal.cpp)

# 生成静态库 (.a 文件)
add_library(BetterSTL_static STATIC ${BETTERSTL_SOURCES})
target_include_directories(BetterSTL_static PUBLIC include)
set_target_properties(BetterSTL_static PROPERTIES 
    OUTPUT_NAME BetterSTL
    PREFIX lib)

# 生成动态库 (.so 文件)
add_library(BetterSTL_shared SHARED ${BETTERSTL_SOURCES})
target_include_directories(BetterSTL_shared PUBLIC include)
set_target_properties(BetterSTL_shared PROPERTIES 
    OUTPUT_NAME BetterSTL
    PREFIX lib)

# 默认链接到静态库
add_library(BetterSTL ALIAS BetterSTL_static)

enable_testing()

add_executable(BigIntegerTests tests/big_integer_test.cpp)
target_include_directories(BigIntegerTests PRIVATE include)
target_link_libraries(BigIntegerTests PRIVATE BetterSTL_static)
add_test(NAME BigIntegerTests COMMAND BigIntegerTests)

add_executable(BigDecimalTests tests/big_decimal_test.cpp)
target_include_directories(BigDecimalTests PRIVATE include)
target_link_libraries(BigDecimalTests PRIVATE BetterSTL_static)
add_test(NAME BigDecimalTests COMMAND BigDecimalTests)

# 生成导出信息用于外部使用
install(TARGETS BetterSTL_static BetterSTL_shared
        LIBRARY DESTINATION lib
        ARCHIVE DESTINATION lib
        RUNTIME DESTINATION bin)
install(DIRECTORY include/ DESTINATION include)

