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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions