FORGE KUI / learn

编译与打包设置页

匹配 CRT,复制运行库,在独立目录检查启动和表单操作。

版本 3.61.7

第05课
准备
设置页的输入与保存检查通过
学完可以做
复制出可独立启动的交付目录
下载工程 ↓settings-lab.zip

工程如何包含页面

CMake 读取两份 HTML 与 app.css,将样式插入页面并生成 generated_page.h。EXE 包含这两份界面,因此无需额外复制页面;其他使用 loadFile 或外部字体、图片的应用仍需部署各自资源。

cmake
cmake_minimum_required(VERSION 3.20)
project(forge_kui_settings_lab LANGUAGES CXX)
if(NOT CMAKE_CXX_STANDARD)
  message(FATAL_ERROR "Set CMAKE_CXX_STANDARD to match the selected SDK package.")
endif()
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if(MSVC)
  add_compile_options(/utf-8)
endif()
find_package(Kui 3 REQUIRED)
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/app.css" APP_CSS)
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/settings.zh.html" APP_HTML_ZH)
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/settings.en.html" APP_HTML_EN)
string(REPLACE "<!-- APP_CSS -->" "<style>${APP_CSS}</style>" APP_HTML_ZH "${APP_HTML_ZH}")
string(REPLACE "<!-- APP_CSS -->" "<style>${APP_CSS}</style>" APP_HTML_EN "${APP_HTML_EN}")
configure_file(page.h.in generated_page.h @ONLY)
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS app.css settings.zh.html settings.en.html)
add_executable(settings_lab main.cpp)
target_include_directories(settings_lab PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
target_link_libraries(settings_lab PRIVATE Kui::Kui)
kui_copy_runtime_dlls(settings_lab)
include(CTest)
if(BUILD_TESTING)
  add_executable(settings_state_test settings_state_test.cpp)
  add_test(NAME settings_state COMMAND settings_state_test)
endif()

Release 与 Debug

Release 配置使用 /MD 和 Release 核心。Debug 配置通常使用 /MDd 和 Debug 核心。若已有消费者的 Debug 固定为 /MD,需要在 find_package 前配置 Kui_USE_DEBUG_VARIANT OFF;不要只改一个 DLL 文件名来处理 ABI 不匹配。

构建和数据模型回归

配置工程后编译,并运行 CTest。回归覆盖空白处理、长度边界、拒绝时状态保持和文本保存。测试通过后仍要启动实际窗口,确认表单输入和按钮操作。

powershell
$cxxStandard = Read-Host SDK-standard
cmake -S . -B build -A x64 "-DCMAKE_CXX_STANDARD=$cxxStandard" -DKui_DIR=G:/SDK/kui/cmake
cmake --build build --config Release --parallel 4
ctest --test-dir build -C Release --output-on-failure
.\build\Release\settings_lab.exe

独立目录运行

为本次练习创建 staging 目录,复制 EXE 和构建目录中的运行库。这个操作不打包 SDK 本身,也不代表 SDK 已对外发版。将 staging 放到不同位置启动,检查保存、恢复和错误状态。

powershell
New-Item -ItemType Directory -Force staging
Copy-Item .\build\Release\settings_lab.exe .\staging\
Copy-Item .\build\Release\*.dll .\staging\
.\staging\settings_lab.exe --english

交付说明

记录 SDK 版本、目标系统、架构、编译配置与第三方许可。这个项目没有文件持久化、真实通知和在线服务;增加这些能力后,应补充错误处理、资源清单和对应测试。

动手练习与验收

用这些动作确认自己完成了本课,不必额外抄一份同样的代码。

  • 复制 Release 输出到独立目录,带上对应 DLL。
  • 从别的工作目录运行中英文窗口。
  • 确认嵌入页面不需要额外复制 HTML,新增外部资源则要一起交付。
  • 在未设置开发 PATH 的目标环境检查启动与保存。

文档有误或遗漏?

反馈此页问题 →