Skip to content

Commit c4a9d51

Browse files
committed
docs: Windows E2E parity plan
1 parent efbd7d0 commit c4a9d51

1 file changed

Lines changed: 43 additions & 0 deletions

File tree

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Windows E2E 与 macOS 对齐方案
2+
3+
> 目标:Windows E2E 从 20/49 提升到 ~32/49,与 macOS 33/49 对齐。
4+
5+
## 根因分析
6+
7+
| 类别 | 测试数 | 问题 | 修复方式 |
8+
|------|--------|------|----------|
9+
| mcpp run/test 单引号 | 1 (02) | `cli.cppm` 用 POSIX 单引号执行 binary | `_WIN32` 改双引号 |
10+
| clang-scan-deps 查找 | 1 (16) | `cli.cppm` 硬编码无 .exe | 调用已有 `find_scan_deps()` |
11+
| symlink 依赖 | 4 (10,24,27,32) | `_inherit_toolchain.sh``ln -sf` |`cp -r` fallback |
12+
| bash-specific 语法 | 1 (19) | `compgen -G` 不在 Git Bash | 改用 `find` |
13+
| unix-shell 误标 | 1 (38_mirror) | 实际只需 symlink fallback | 改标签 |
14+
| import-std-libcxx 硬编码路径 | 4 (37,38,40,41) | 测试用 Linux 路径 | 加 Windows 路径 |
15+
16+
## 修复计划
17+
18+
### Fix 1: cli.cppm 单引号 → 双引号 (解锁 02)
19+
- `src/cli.cppm:2611``mcpp run` 执行 binary 用 `'{}'` → Windows 改 `"{}"`
20+
- `src/cli.cppm:2522` — fast-path ninja 同上
21+
- `src/cli.cppm:3159` — test PATH prefix 是 POSIX 语法,Windows 跳过
22+
23+
### Fix 2: clang-scan-deps 查找 (解锁 16)
24+
- `src/cli.cppm:2162-2167` — 直接查找 `clang-scan-deps`,不走 `find_scan_deps()`
25+
- 改为调用 `mcpp::toolchain::clang::find_scan_deps(*tc)` 已正确处理 .exe
26+
27+
### Fix 3: _inherit_toolchain.sh cp fallback (解锁 10,24,27,32)
28+
-`ln -sf` 失败时用 `cp -r` 替代
29+
- 自动检测 symlink 可用性
30+
31+
### Fix 4: 19_bmi_cache_reuse.sh bash 兼容 (解锁 19)
32+
- `compgen -G``find ... | grep -q .`
33+
34+
### Fix 5: LLVM 测试 Windows 路径 (解锁 37,38,40,41)
35+
- 参照 36_llvm_toolchain.sh 的模式加 Windows 路径和 .exe 处理
36+
37+
### Fix 6: 标签修正
38+
- `38_self_config_mirror.sh` 改标签
39+
- `run_all.sh` 移除已修复测试的标签限制
40+
41+
## 预期结果
42+
43+
修复后:**~32 passed, 0 failed, ~17 skipped** (与 macOS 33 passed 对齐)

0 commit comments

Comments
 (0)