Files
scuc-qt-course/CMakeLists.txt
T
张宗平 83620c0cf5 教案对齐官方方案书:重写为 5 天 C++/Qt 教学设计,补齐 6 个 Qt 技术缺口示例
- 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 的分层预案挂钩
2026-07-02 11:31:44 +08:00

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()