cmake_minimum_required(VERSION 3.16) project(HIS LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) find_package(Qt6 COMPONENTS Widgets Charts REQUIRED) # 通用核心逻辑库(模型+业务服务),供 CLI/GUI 共用 set(COMMON_SOURCES # Models src/models/ward.cpp src/models/patient.cpp src/models/patient_case.cpp src/models/doctor.cpp src/models/medicine.cpp src/models/check.cpp src/models/department.cpp src/models/payment.cpp src/models/settlement.cpp # Core services / composition root src/core/his_core.cpp src/core/ward_service.cpp src/core/patient_service.cpp src/core/patient_case_service.cpp src/core/report_service.cpp src/core/doctor_service.cpp src/core/medicine_service.cpp src/core/check_service.cpp src/core/department_service.cpp src/core/payment_service.cpp src/core/settlement_service.cpp src/core/payment_management_service.cpp # Utils src/utils/file_manager.cpp src/utils/logger.cpp src/utils/uuid.cpp src/utils/json/JsonParse.cpp src/utils/json/JsonValue.cpp src/utils/json/JsonSerializer.cpp src/utils/json/JsonError.cpp ) add_library(his_core_lib STATIC ${COMMON_SOURCES}) target_include_directories(his_core_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/include/utils/json ) add_executable(his src/main_shell.cpp src/cli/repl_shell.cpp src/cli/table_printer.cpp) target_link_libraries(his PRIVATE his_core_lib) add_executable(his_gui gui/main_gui.cpp gui/mainwindow.cpp gui/dialogs/patient_dialog.cpp gui/dialogs/department_detail_dialog.cpp gui/dialogs/payment_dialog.cpp gui/dialogs/payment_management_dialog.cpp gui/dialogs/settlement_dialog.cpp ) target_link_libraries(his_gui PRIVATE his_core_lib Qt6::Widgets Qt6::Charts) target_include_directories(his_gui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/gui )