Skip to content

外部 GCC 工具链下找不到mcpp安装的 Ninja #875

Open

Description

@skyler-zbt

本机 mcpp 首次初始化成功安装 Ninja 1.12.1 到:

C:\Users\Tim\.mcpp\registry\subos\current\bin\ninja.exe

但进程 PATH 中没有 Ninja,外部 GCC 路径不在 mcpp provider store 中。命令:

$env:MCPP_TOOLCHAIN = 'path:G:/msys2/ucrt64'
mcpp build --strict --jobs 6

工具链检测已正确得到 GCC 16.2.0,却返回:

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

  1. skyler-zbt commented on Oct 31, 2026

    @skyler-zbt
    Author

    还有三个日志记录(失败,成果,仅补 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 (.)

    Finished dev [unoptimized + debuginfo] in 7.29s · custom: toolchain
    

    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

    Finished dev [unoptimized + debuginfo] in 0.17s · custom: toolchain
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      ⌂ Proxy