使用方式
C++ SDK 的跨 DLL 公共 ABI 使用 STL。消费者 Release /MD 对应 Release 核心,Debug /MDd 对应 Debug 核心。若 Debug 工程固定 /MD,须在 find_package 前设 Kui_USE_DEBUG_VARIANT OFF。
接入和限制
使用 kui_copy_runtime_dlls 部署运行库,并在干净目录或目标机器验证。检查字体、图片、页面、扩展 sidecar 和媒体 DLL 是否齐全;不要只复制 EXE。缺 DLL、错误架构和 CRT 混用应在首次运行前排查。
独立 CMake 消费者
课程工程通过 find_package(Kui) 消费已安装 SDK,不依赖引擎源目录。页面在配置阶段嵌入 EXE,运行库使用 SDK helper 复制。
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 输出,再验证复制后的独立目录。
- 构建应用并执行 kui_copy_runtime_dlls;使用哪些 component 就带上对应依赖。
- 把 EXE、配套 DLL、资源和 sidecar 作为一组复制,不只取应用 EXE。
- 从工程目录外启动,验证图片、字体、页面和扩展路径。
- 在没有开发环境辅助 PATH 的目标环境检查启动与关键操作。
- 保留版本、依赖和校验清单;应用自己的用户数据另外选择存储位置。
Debug 与 Release 不混用
默认 Debug 目标使用 Debug CRT 对应运行时。如果你的 Debug 工程必须使用 Release CRT,按 SDK 文档在 find_package 前配置 Kui_USE_DEBUG_VARIANT OFF,并确保消费者自身的 CRT 也匹配。不要用随机复制 DLL 的方法排除 ABI 问题。
文档有误或遗漏?
反馈此页问题 →