83620c0cf5
- docs/teaching/OUTLINE.md、slides/day1-5.html、index.html:替换此前自定义的 4 天方案,严格对齐 docs/TRAINING_PLAN_2026.md「C++方向」Day1-5 课堂内容 (Day6-10 为纯项目实作,不在教案范围) - docs/teaching/examples/:官方方案书要求但仓库 p03/(wiki 抓取内容) 未覆盖的 QSS/Model-View/JSON/QThread/QPropertyAnimation/QStateMachine 六个技术点, 各补一个最小可运行示例 + README 教学文档,均已离屏验证跑通;手工维护, 不属于 gen_part3.py 生成产物 - 根 CMakeLists.txt:接入 docs/teaching/examples 构建(BUILD_QT_PART 分支内), 不改动生成器管理的 p01/p03 CMakeLists - 任务卡改为目标/验收标准/基础知识参考三段式模板,custom.css 配套新增样式 - docs/teaching/PRETEST.md:10 题 10 分钟 C++ 摸底测验,验证教案假定的受众 基础是否成立,并与 OUTLINE.md §0 的分层预案挂钩
60 lines
2.7 KiB
CMake
60 lines
2.7 KiB
CMake
# ==============================================================================
|
|
# 四川大学 C++/LinuxC — 「02. Qt 方向」课程代码仓库
|
|
#
|
|
# 顶层项目管理。两个 part 相互独立、相对隔离:
|
|
# * p01 —— C/C++ 强化(控制台程序,host gcc/g++ 即可构建)
|
|
# * p03 —— Qt 桌面应用开发(需隔离的 Qt 5.14.2 工具链)
|
|
#
|
|
# 目录按「章节 + 话题」组织,采用深缩写:part 缩写 pNN(顶层不编号)/
|
|
# 章缩写 chNN / 节缩写 sNN。例如 p01/ch04/s03/ 。
|
|
# 每个可执行示例 = 一个独立 add_executable 目标,可单独
|
|
# cmake --build build --target <name> 构建运行。
|
|
# ------------------------------------------------------------------------------
|
|
cmake_minimum_required(VERSION 3.16)
|
|
project(qt_course LANGUAGES C CXX)
|
|
|
|
# --- 标准:默认 C17 / C++17(任务 1 的基线),严格、不允许编译器扩展 -----------
|
|
set(CMAKE_C_STANDARD 17)
|
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
|
set(CMAKE_C_EXTENSIONS OFF)
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
set(CMAKE_BUILD_TYPE Debug CACHE STRING "" FORCE)
|
|
endif()
|
|
|
|
# 教学示例:警告要明显但不阻断(-Wall -Wextra 默认开,特定目标再额外收紧)
|
|
add_compile_options(-Wall -Wextra)
|
|
|
|
# 默认导出编译命令,便于编辑器/探针脚本复用
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
option(BUILD_QT_PART "Build the Qt desktop examples (needs isolated Qt 5.14.2)" OFF)
|
|
|
|
# --- Part 1: C/C++ 强化(host 构建) --------------------------------------------
|
|
add_subdirectory(p01)
|
|
|
|
# --- Part 3: Qt 桌面应用开发(仅当显式开启且找到隔离 Qt 时构建) ----------------
|
|
if(BUILD_QT_PART)
|
|
# 找到的 Qt 版本必须严格隔离为 5.14.x;否则中止,避免误用系统 5.15。
|
|
find_package(Qt5 COMPONENTS Core Widgets Gui REQUIRED)
|
|
message(STATUS "Found Qt5 ${Qt5Core_VERSION_STRING} at ${Qt5Core_DIR}")
|
|
if(NOT Qt5Core_VERSION_STRING MATCHES "^5\\.14\\.")
|
|
message(FATAL_ERROR
|
|
"Refusing to build Qt examples against Qt ${Qt5Core_VERSION_STRING}: "
|
|
"this repo requires the ISOLATED Qt 5.14.x toolchain. "
|
|
"Run via tools/docker/docker_run.sh, or pass -DCMAKE_PREFIX_PATH=/path/to/qt/5.14.2/gcc_64.")
|
|
endif()
|
|
set(CMAKE_AUTOMOC ON)
|
|
set(CMAKE_AUTORCC ON)
|
|
set(CMAKE_AUTOUIC ON)
|
|
add_subdirectory(p03)
|
|
|
|
# 教学补充示例(手工维护,非 tools/gen_part3.py 生成产物):方案书课程要求
|
|
# 但仓库 p03/ 的 wiki 抓取内容未覆盖的技术点(QSS/Model-View/JSON/QThread/
|
|
# 动画/状态机),见 docs/teaching/examples/。
|
|
add_subdirectory(docs/teaching/examples)
|
|
endif()
|