1a788a8278
学生主要用 Windows,Docker 方案不再需要:删掉 tools/docker/ 及 README/HANDOFF/ CMakeLists 里的相关引用(含一处已失效的 docker_run.sh 死链接)。 install_qt_host.sh 现在同时装期号匹配的 Qt Creator 4.11.0:官方 .run 安装器 强制要求 Qt 账号登录且无 Skip 选项,改用 tools/extract_qtcreator_payload.py 直接从 .run 里定位、解出内嵌的 7z payload,绕开账号登录。提取逻辑先解到 staging 目录再原子替换到位,避免中途失败留下部分安装但被判定为"已装"; 候选 7z 复用同一临时文件,不会在磁盘上堆多份安装包大小的临时拷贝。
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 tools/install_qt_host.sh, then 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()
|