cmake_minimum_required(VERSION 3.14)
project(AttendanceSystem LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDebugDLL")

# 可选：处理 MSVC 的 utf-8 BOM
if(MSVC)
    add_compile_options("/utf-8")
endif()

# 引入 Google Test
find_package(GTest REQUIRED)
include(GoogleTest)

# 主库目标
add_library(attendance_lib STATIC
    src/app.cpp
    include/app.hpp
)
target_include_directories(attendance_lib PUBLIC include)

# 主程序
target_link_libraries(attendance_lib PUBLIC)
add_executable(attendance_system src/main.cpp)
target_link_libraries(attendance_system PRIVATE attendance_lib)

# 测试目标
get_filename_component(TEST_SRC tests/basic_test.cpp NAME)
add_executable(basic_test tests/basic_test.cpp)
target_link_libraries(basic_test PRIVATE attendance_lib GTest::GTest GTest::Main)
target_include_directories(basic_test PRIVATE include)
gtest_discover_tests(basic_test)

# 旧式测试目标（可选保留）
# add_executable(basic_test_old tests/basic_test_old.cpp)
# target_link_libraries(basic_test_old PRIVATE attendance_lib)