## 现象 0.0.97 的 #233 修复(同名源对象路径按"镜像源相对路径"消歧)对**绝对路径源** (典型:依赖包 build.mcpp 在 `target/.build-mcpp/deps/<pkg>@<ver>/out/` 下 `mcpp:generated=` 的源文件,路径是绝对的)会把绝对路径剥掉前导 `/` 后当相对 路径镜像,对象文件于是落到**当前工作目录**下: ``` <cwd>/tmp/claude-1000/.../tests/examples/opencv-module/target/.build-mcpp/deps/compat.opencv5@5.0.0/out/tu/jpeg16/3rdparty_libjpeg-turbo_src_jdcolor.o ^^^^^ 这里的 <cwd> 是 workspace 根 —— 对象树整个逃逸出 target/,污染仓库树 ``` 复现:workspace 根执行 `mcpp test -p opencv-module`(成员依赖 compat.opencv5, 其 build.mcpp 生成 jpeg12/jpeg16 的同名 stub 源 → 触发碰撞消歧),构建成功、 测试通过,但 workspace 根多出一个 `tmp/<原绝对路径全镜像>/**.o` 目录树 (git status 出现 untracked `tmp/`)。CI runner 上同理会在 checkout 根产生 `home/runner/...` 的镜像树。 ## 期望 碰撞消歧对绝对路径源应先相对化到某个稳定根(项目根 / OUT_DIR),相对化失败则 哈希消歧;无论如何对象文件必须留在 target/ 内。 ## 环境 mcpp 0.0.97 · linux x86_64 · 构建功能本身正常(链接、运行、测试全通过), 纯路径逃逸问题。
Activity
chore(release): unify #230-#243 batch into a single 0.0.98 release
test(e2e): repros for object-path #240 (same-named main) + #239 (out-…
fix(build): unify object-path assignment so entry-main follows disamb…
chore(release): bump mcpp 0.0.97 -> 0.0.98 (#240 #239 object-path fixes)
docs(governance): #230-#243 batch ledger + no-workaround policy + res…
chore(release): unify #230-#243 batch into a single 0.0.98 release
Sunrisepeak commentedon Jul 18, 2026
Fixed in 0.0.98 (released + mirrored to xlings-res gh+gitcode + indexed +
xlings install mcpp@0.0.98verified). Merged via #245;safe_object_prefixkeeps out-of-root/@object paths underobj/. Repro locked by e2e 124.Link forms, standard levels and path lengths: #641 and #642 (2026.9.1…