Skip to content

[bug] #233 对象路径消歧对绝对路径源(dep build.mcpp OUT_DIR 生成源)逃逸出 target/,在 CWD 镜像出整棵绝对路径树 #239

Description

@Sunrisepeak

现象

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 · 构建功能本身正常(链接、运行、测试全通过),
纯路径逃逸问题。

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