本机 `mcpp` 首次初始化成功安装 Ninja 1.12.1 到: ```text C:\Users\Tim\.mcpp\registry\subos\current\bin\ninja.exe ``` 但进程 PATH 中没有 Ninja,外部 GCC 路径不在 mcpp provider store 中。命令: ```powershell $env:MCPP_TOOLCHAIN = 'path:G:/msys2/ucrt64' mcpp build --strict --jobs 6 ``` 工具链检测已正确得到 GCC 16.2.0,却返回: ```text error: build failed cannot start 'ninja' (error 2): no such file or directory ``` 同一个已安装 Ninja 通过绝对路径执行 `--version` 返回 1.12.1。首次重试在进程 PATH 中补入 Ninja 和 GCC 的 bin 目录后构建成功,随后两种 profile 的全部测试通过。另做仅补 Ninja 目录的增量构建,原命令也返回 0。 源码中的 `ninja_program_for` 只尝试在编译器的 provider 邻近包查找 Ninja,失败便返回裸名称 `ninja`,未在这个分支回查当前 mcpp home 已安装的工具。 测试记录日志: Bundled xlings 2026.10.26.1 (from the release of this mcpp: C:\Users\Tim\.xlings\data\xpkgs\xim-x-mcpp\2026.10.31.3\registry\bin\xlings.exe) Network xim GLOBAL raw.githubusercontent.com: reachable Network xim CN raw.gitcode.com: reachable Network mcpplibs GLOBAL raw.githubusercontent.com: reachable Network mcpplibs CN raw.gitcode.com: reachable Initialize mcpp sandbox layout (one-time) Fetching package index (one-time) Bootstrap ninja into mcpp sandbox (one-time) Installing xim:ninja@1.12.1 Source xim:ninja@1.12.1 ghfast.top (attempt 1) Downloading xim:ninja@1.12.1 done, 248 KB in 10.9s warning: --toolchain path:G:/msys2/ucrt64 replaces gcc@16.1.0 declared at [toolchain].default (mcpp.toml) Using toolchain gcc 16.2.0 ← G:/msys2/ucrt64 [custom · env MCPP_TOOLCHAIN] Target x86_64-w64-mingw32 → x86_64-w64-windows-gnu toolchain: gcc 16.2.0 (x86_64-w64-mingw32) abi(libc)=msvcrt cxxstdlib=libstdc++ arch=x86_64 os=windows triple=x86_64-w64-mingw32 source: custom · env MCPP_TOOLCHAIN reason: [toolchain] in mcpp.toml
Activity
skyler-zbt commentedon Oct 31, 2026
还有三个日志记录(失败,成果,仅补 Ninja 路径的增量构建成功)
warning: --toolchain path:G:/msys2/ucrt64 replaces gcc@16.1.0 declared at [toolchain].default (mcpp.toml)
Using toolchain gcc 16.2.0 ← G:/msys2/ucrt64 [custom · env MCPP_TOOLCHAIN]
Target x86_64-w64-mingw32 → x86_64-w64-windows-gnu
error: build failed
cannot start 'ninja' (error 2): no such file or directory
warning: --toolchain path:G:/msys2/ucrt64 replaces gcc@16.1.0 declared at [toolchain].default (mcpp.toml)
Using toolchain gcc 16.2.0 ← G:/msys2/ucrt64 [custom · env MCPP_TOOLCHAIN]
Target x86_64-w64-mingw32 → x86_64-w64-windows-gnu
Compiling M3Lib v0.1.0 (.)
warning: --toolchain path:G:/msys2/ucrt64 replaces gcc@16.1.0 declared at [toolchain].default (mcpp.toml)
Using toolchain gcc 16.2.0 ← G:/msys2/ucrt64 [custom · env MCPP_TOOLCHAIN]
Target x86_64-w64-mingw32 → x86_64-w64-windows-gnu