Files
scuc-qt-course/docs/teaching/examples/mandelbrot_renderer/CMakeLists.txt
T
张宗平 6773f9b29e Day4 教学示例:Mandelbrot 分形渲染器(QPainter 绘图 + 多线程 + 事件处理综合演示)
三段式对比直击 Day4 slides「主线程耗时=冻结」痛点:主线程渲染冻结 / 后台单线程不卡但慢 / 后台多线程不卡且快。
- QThreadPool + QRunnable 分水平条带并行,排队信号槽回传,epoch 版本号防过期覆盖
- wheelEvent 缩放(鼠标为锚)+ mouseEvent 拖拽平移 + paintEvent 画 QImage
- 子目录自带独立 CMakeLists.txt,可单独构建/共享(双模式约定同 lineedit_eye_toggle)
- 配套 README(概念/走读/双构建/5 踩坑点/练习)+ 设计规格
- 已验证:独立工程 offscreen 运行 exit=0;主工程构建 exit=0(w64devkit g++16 + mingw73 Qt5.14.2)

注:主工程 examples/CMakeLists.txt 的接入(mandelbrot + lineedit_eye_toggle + qdialog + themes 原子接入)与顶层 CMakeLists 本地调试改动未一并提交,待整体确认后单独提交。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-09 09:01:29 +08:00

37 lines
1.6 KiB
CMake

# =============================================================================
# Day4 Mandelbrot 分形渲染器 —— 独立 CMake 工程
#
# 本文件供「单独打开 / 独立构建 / 单独打包共享」使用:
# cmake -S . -B build -G Ninja \
# -DCMAKE_PREFIX_PATH=<Qt5.14.2> -DCMAKE_BUILD_TYPE=Debug
# cmake --build build
#
# 仓库统一构建【不走】这里:顶层 CMakeLists.txt 只
# add_subdirectory(docs/teaching/examples) 且不递归,统一构建走
# examples/CMakeLists.txt 的 add_executable,源文件同为
# main.cpp / mandelbrot_widget.cpp / mandelbrot_strip_task.cpp(零重复)。
# 本目录不计入仓库「173 目标」计数。
#
# 说明:本工程为手写规范版(C++17 / cmake 3.16 / 无 ANDROID 噪音),
# 区别于其它子目录里 Qt Creator 自动导出的低质量模板。
# =============================================================================
cmake_minimum_required(VERSION 3.16)
project(qt_mandelbrot_renderer LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_AUTOMOC ON)
find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED)
message(STATUS "Found Qt5 ${Qt5Core_VERSION_STRING} at ${Qt5Core_DIR}")
add_executable(qt_mandelbrot_renderer
main.cpp
mandelbrot_widget.cpp
mandelbrot_strip_task.cpp)
target_include_directories(qt_mandelbrot_renderer PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(qt_mandelbrot_renderer PRIVATE Qt5::Core Qt5::Gui Qt5::Widgets)
target_compile_options(qt_mandelbrot_renderer PRIVATE -Wall -Wextra)