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)