现象
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 · 构建功能本身正常(链接、运行、测试全通过),
纯路径逃逸问题。
现象
0.0.97 的 #233 修复(同名源对象路径按"镜像源相对路径"消歧)对绝对路径源
(典型:依赖包 build.mcpp 在
target/.build-mcpp/deps/<pkg>@<ver>/out/下mcpp:generated=的源文件,路径是绝对的)会把绝对路径剥掉前导/后当相对路径镜像,对象文件于是落到当前工作目录下:
复现: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 · 构建功能本身正常(链接、运行、测试全通过),
纯路径逃逸问题。