# 手工维护 —— 不是 tools/gen_part3.py 的生成产物，重新生成 p01/p03 不会影响这里。
#
# 教学补充示例：方案书「C++方向」课程要求、但仓库 p03/（wiki 抓取内容）未覆盖
# 的技术点，每个子目录一个最小可运行 Qt 程序 + 配套 README.md 教学文档。
# 不计入 README.md/CLAUDE.md 里「144+29=173 个目标」的生成器目标计数。

function(add_teaching_example name dir)
    add_executable(${name} ${dir}/${name}.cpp)
    set_target_properties(${name} PROPERTIES
        CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF AUTOMOC ON)
    target_link_libraries(${name} PRIVATE Qt5::Core Qt5::Gui Qt5::Widgets)
    target_compile_options(${name} PRIVATE -Wall -Wextra)
endfunction()

add_teaching_example(qt_qss_styling qss_styling)
add_teaching_example(qt_model_view_basics model_view)
add_teaching_example(qt_json_parse_write json_io)
add_teaching_example(qt_thread_worker qthread_worker)
add_teaching_example(qt_property_animation property_animation)
add_teaching_example(qt_state_machine state_machine)

# 坑点最小复现示例（OUTLINE_4DAY.md §9.2）：默认跑「正确写法」离屏可验证退出码 0，
# 错误写法一律用命令行开关现场触发（--crash / --dangle），不影响自动化验证。
add_teaching_example(qt_pitfall_stack_widget pitfall_stack_widget)
add_teaching_example(qt_pitfall_lambda_capture pitfall_lambda_capture)
add_teaching_example(qt_pitfall_double_connect pitfall_double_connect)
add_teaching_example(qt_table_widget_basics table_widget)
# Day5 综合案例参考实现（OUTLINE_4DAY.md §3 / §9.3）
add_teaching_example(qt_student_manager student_manager)

add_custom_target(all_teaching_examples DEPENDS
    qt_qss_styling
    qt_model_view_basics
    qt_json_parse_write
    qt_thread_worker
    qt_property_animation
    qt_state_machine
    qt_pitfall_stack_widget
    qt_pitfall_lambda_capture
    qt_pitfall_double_connect
    qt_table_widget_basics
    qt_student_manager)
