-
Notifications
You must be signed in to change notification settings - Fork 5
Building
本页回答两个问题:应该用哪套构建系统,以及构建后你会得到哪些产物。
- Windows 上推荐用 CMake + MSVC。
- Linux 使用 Make。
- macOS 推荐 CMake + Homebrew(Make 仍可用作备选)。
- Windows MinGW 交叉编译使用 Docker + Make。
- 项目会同时产出 GUI 程序和独立 CLI。
-
VERSION.txt是版本与应用信息的单一事实源,打包脚本会读取它。 - 构建前需要初始化子模块;
libshijima已集成在仓库里,不是子模块。 - Release workflow 会生成 Windows、Linux、macOS x86_64 与 macOS arm64 产物。
| 依赖 | 说明 |
|---|---|
| C++17 编译器 | MSVC 2022 / GCC / Clang |
| Qt 6.8+ |
Core、Gui、Widgets、Concurrent、LinguistTools;Multimedia 可选 |
| Git | 需要拉取子模块 |
| CMake 3.21+ | Windows/MSVC 与 macOS 主构建方式 |
| Make | Linux / macOS 备选 / MinGW 路径 |
先拉源码并初始化子模块:
git clone https://github.com/qingchenyouforcc/NeurolingsCE.git
cd NeurolingsCE
git submodule update --init --recursive当前需要一起参与构建的目录包括:
libshimejifinder/cpp-httplib/ElaWidgetTools/
| 场景 | 推荐方式 |
|---|---|
| Windows 本机开发 | CMake + MSVC |
| Visual Studio 调试 | CMake + CMakeSettings.json(内置 x64-Debug / x64-Release) |
| Linux 本机构建 | Make |
| macOS 本机构建 | CMake + Homebrew(首选)或 Make |
| Windows 交叉编译 / CI 对齐 | Docker + MinGW + Make |
这是 Windows 本机开发的推荐方案。
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug -DQt6_DIR=D:/Qt/6.8.3/msvc2022_64/lib/cmake/Qt6
cmake --build build要点:
- 必须使用 x64 工具链;32 位 MSVC 会被直接拒绝。
-
Qt6_DIR也可以换成CMAKE_PREFIX_PATH或环境变量QTDIR。 - 如果检测到 conda 提供的 Qt,CMake 会调整 MSVC runtime 以避免 CRT 冲突。
- 如果本机能找到
windeployqt,构建后会自动部署 Qt 运行时到输出目录。 - 也可以直接用 Visual Studio 打开项目,
CMakeSettings.json已配置x64-Debug和x64-Release两个方案。
构建后通常会看到这些目标:
NeurolingsCE-
NeurolingsCECli,输出名为NeurolingsCE-cli -
NeurolingsCETests与NeurolingsCEBubbleTests(测试)
Release 构建完成后,可以使用仓库脚本生成便携包和安装包:
powershell -ExecutionPolicy Bypass -File .\src\tools\package-windows-bin.ps1 -SourceDir out/build/x64-Release/bin
powershell -ExecutionPolicy Bypass -File .\installer\wix\build-msi.ps1
powershell -ExecutionPolicy Bypass -File .\installer\wix\build-bundle.ps1常见输出:
out/package/NeurolingsCE_windows_x86_64_v<version>.zipout/installer/NeurolingsCE_windows_x86_64_v<version>.msiout/installer/NeurolingsCE_windows_x86_64_v<version>-setup.exe
其中 -setup.exe 是引导安装器,会把主 MSI 和 VC 运行库安装流程串起来。
package-windows-bin.ps1 默认读取 VERSION.txt 生成输出目录名,并将 out/build/x64-Release/bin 复制到 out/package/ 后压缩。常用参数:
powershell -ExecutionPolicy Bypass -File .\src\tools\package-windows-bin.ps1 `
-SourceDir out/build/x64-Release/bin `
-OutputRoot out/package `
-SkipVcRedist `
-SkipZip如果还没安装 WiX,可以先只生成 .wxs 文件检查内容:
powershell -ExecutionPolicy Bypass -File .\installer\wix\build-msi.ps1 -GenerateOnly适合复现 CI 或生成 Windows 发布目录。
docker build -t neurolingsce-dev dev-docker
docker run -e CONFIG=release --rm -v "$(pwd)":/work neurolingsce-dev bash -c 'mingw64-make -j$(nproc)'调试版:
docker run -e CONFIG=debug --rm -v "$(pwd)":/work neurolingsce-dev bash -c 'mingw64-make -j$(nproc)'产物位置:
publish/Windows/release/publish/Windows/debug/
该目录会同时包含 GUI 程序、NeurolingsCE-cli.exe、Qt DLL 和插件。
Ubuntu / Debian 常见依赖:
sudo apt-get install -y build-essential qt6-base-dev qt6-multimedia-dev qt6-tools-dev qt6-l10n-tools libarchive-dev libwayland-dev wayland-protocols libxcb-cursor0 pkg-configFedora 常见依赖:
sudo dnf install -y qt6-qtbase-devel qt6-qtmultimedia-devel qt6-linguist libarchive-devel wayland-devel wayland-protocols-devel构建:
CONFIG=release make -j$(nproc)或:
CONFIG=debug make -j$(nproc)产物位置:
publish/Linux/<config>/
常见内容:
-
shijima-qt,Make 路径下的 GUI 可执行名 NeurolingsCE-clilibunarr.so.1
生成 AppImage:
CONFIG=release make -j$(nproc)
make appimage安装与卸载:
make install PREFIX=/usr/local
make uninstall PREFIX=/usr/localmacOS 同时支持 Apple Silicon(arm64)与 Intel(x86_64)。Qt6 可通过 Homebrew 或 MacPorts 安装;Homebrew 与 CMake 流程对齐得最好。
- 安装依赖(Homebrew,推荐):
brew install qt qttools libarchive cmake pkg-config或使用 MacPorts:
sudo port install qt6-qtbase qt6-qtmultimedia qt6-qttools pkgconfig libarchive cmake- 构建(推荐使用 CMake,与其他平台一致):
cmake -B build -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release \
-DQt6_DIR="$(brew --prefix qtbase)/lib/cmake/Qt6"
cmake --build build -j$(sysctl -n hw.ncpu)构建产物会输出到 build/bin/,包括 NeurolingsCE、NeurolingsCE-cli 以及测试可执行文件 NeurolingsCETests。
如果使用 MacPorts,把 Qt6_DIR 改为 /opt/local/libexec/qt6/lib/cmake/Qt6 即可。
- (备选)使用顶层 Makefile:
CONFIG=release make -j$(sysctl -n hw.ncpu)common.mk 在 macOS 上会自动探测 Homebrew 的 qtbase、qtmultimedia、qttools 与 libarchive;如果同时安装了 MacPorts,也会回退到 /opt/local/libexec/qt6。如需指定其他 Qt 路径,可在命令行覆盖:
CONFIG=release make QT_MACOS_PATH=/your/Qt/lib \
MOC=/your/Qt/libexec/moc RCC=/your/Qt/libexec/rcc \
LRELEASE=/your/Qt/bin/lrelease -j$(sysctl -n hw.ncpu)生成 .app:
make macapp产物位置:
publish/macOS/<config>/publish/macOS/<config>/NeurolingsCE.app
发布目录同样会包含 NeurolingsCE-cli。
仓库使用 GitHub Pages 托管静态更新清单:
https://blog.qingchenyou.asia/NeurolingsCE/update/latest.json
发布 Release 后,Publish update manifest workflow 会读取 Release metadata 和 assets:先用 tools/generate_sha256sums.py 生成确定性的 SHA256SUMS.txt 并补传到 Release,刷新并校验元数据后,再用 tools/generate_update_manifest.py 生成 latest.json 并部署到 Pages。维护者需要确认仓库 Pages Source 是 GitHub Actions;如果 Release assets 是发布之后才补传的,重新运行该 workflow 即可同步。
构建完成后运行:
ctest --test-dir build -C Debug --output-on-failure当前注册的测试目标:
-
NeurolingsCETests:核心协议、包安全、脚本与广播等行为测试。 -
NeurolingsCEBubbleTests:气泡排版与 Codex Markdown 渲染测试。
| 选项 | 默认值 | 说明 |
|---|---|---|
SHIJIMA_USE_QTMULTIMEDIA |
ON |
是否启用音效;找不到 Qt Multimedia 时会退化为关闭而不是失败 |
SHIJIMA_WITH_DEFAULT_MASCOT |
ON |
必须开启;当前不支持关闭 |
SHIJIMA_WITH_LICENSES_TEXT |
ON |
必须开启;当前不支持关闭 |
补充说明:
-
translations/shijima-qt_zh_CN.ts会在有Qt6::lrelease或lrelease时被编译并嵌入。 - 项目不会自动运行
lupdate去覆盖手工维护的翻译源文件。
| 类型 | 常见名字 |
|---|---|
| GUI 程序 | CMake 下为 NeurolingsCE;Make 发布目录中的可执行名当前为 shijima-qt
|
| CLI 程序 |
NeurolingsCE-cli 或 NeurolingsCE-cli.exe
|
| Linux 可分发包 | NeurolingsCE.AppImage |
| macOS 应用包 | NeurolingsCE.app |
如果你在写文档、脚本或自动化,请区分“品牌名”和“当前构建产物名”。仓库整体项目名是 NeurolingsCE,但 Make 路径下的 GUI 可执行文件名当前仍是 shijima-qt。
显式传入 Qt 路径:
cmake -B build -DQt6_DIR=/path/to/Qt/6.8.x/<kit>/lib/cmake/Qt6请切换到 x64 Native Tools,或在 Visual Studio 中选择 x64 配置。
git submodule update --init --recursiveWindows 本机构建可以成功,但输出目录可能缺少 Qt 运行时,导致程序离开 Qt 开发环境后无法启动。
项目会退化为无音效构建,而不是直接失败。