# ============================================================================== # 四川大学 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 构建运行。 # ------------------------------------------------------------------------------ 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) endif()