本地打包每次都要等很久,其中编译这一段有两处纯粹的重复劳动。 Visual Studio 生成器把 ZERO_CHECK 接进了每个目标,CMakeLists.txt 变化时 构建会自己重新生成,所以已有 CMake 缓存时前置的 cmake --preset 不改变任何 结果,只是每个构建目录白等约 10 秒,三个目录就是 30 秒。改成缓存存在就跳过, 需要强制重跑(改了 preset、换了工具链)时传 -Reconfigure。 构建目标也从 ALL_BUILD 收窄到 MetasequoiaImeServer / MetasequoiaImeTsf。 原先会一并构建 MetasequoiaImeServerTests、test_webview_contract、 test_windows_ipc_contract,而 Prepare-PackageFiles.ps1 随后又把它们从包里 删掉。server 目标的依赖闭包已经覆盖 Watchdog、三个面板、Settings、 DictionaryReplay 和 OpenCC 词典,产物一个不少。要连测试一起构建(比如为了 跑 ctest)传 -Target ALL_BUILD,server/AGENTS.md 里的 ctest 段落已注明。 顺带给 cmake --build 加上 --parallel,真正有代码改动时也能并行。 无改动时的增量编译:TSF 18.0s -> 3.7s,Server 21.9s -> 10.9s。 CI 不受影响,它直接调 cmake,不经过这些脚本。
windows —— TSF 文本服务
水杉输入法在 Windows 上的前端:一个纯 TSF 方案的文本服务 DLL,注入宿主进程,负责按键预判、焦点与线程归属、composition 的 edit session 写入,以及与 Server 之间的命名管道协议。候选窗、工具栏、设置页和实际的候选计算都在 ../server/,本目录只做宿主适配。
产品介绍、安装和功能说明见仓库根目录的 README;本目录的代码地图、TSF/COM 硬约定和改动要求见 AGENTS.md。
构建
从仓库根目录配置,源码目录是本目录:
cmake -S windows -B windows/build -A x64 `
-DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake" `
-DVCPKG_TARGET_TRIPLET=x64-windows-static
cmake --build windows/build --config Release --parallel
ctest --test-dir windows/build -C Release --output-on-failure
Win32 用 -A Win32 和 x86-windows-static;安装包两种架构都要。scripts/ 下是本机开发用的生成、构建、注册和签名脚本,从本目录运行。
引擎契约来自 ../engine/contracts/,是本仓的目录,普通检出就有。TSF 只引用这些头文件,不链接引擎运行库。