欢迎加入开源鸿蒙PC社区: https://harmonypc.csdn.net/

欢迎在PC社区平台申请新建项目:https://atomgit.com/OpenHarmonyPCDeveloper

项内容
对象include-what-you-use 0.26.src(IWYU——Google C++ 头文件清理工具;0.26.src = 上游 0.26 tag 源码,归档版本号策略)
环境HUAWEI MateBook Pro(HAD-W32)/ HarmonyOS 6.1.0 / aarch64 / 社区适配版 Conan 2.29.1
仓库OpenHarmonyPCDeveloper/build_in_harmonyos(AtomGit)
PR#13202 — 已合并(2026-09-29,squash merge commit 8e38008b)
Issue#3518
发布include-what-you-use/0.26.src 已入 ohpcd 制品仓

摘要

include-what-you-use(IWYU,“Include What You Use”)是 Google 的 C++ 头文件卫生工具:检查每个 .cc 文件是否只 include 了它直接使用的头,并能按报告改写头文件。本文记录 IWYU 0.26 适配鸿蒙 PC(aarch64)的完整过程:CMake 构建,消费制品仓预编译的 llvm/22.1.0 与 clang/22.1.8 包,上游源码 0 修改、0 补丁,5 项非源码平台适配;上游测试全量 227 条 ctest 真机实跑,223 过、1 条合法跳过、3 条失败(全部为标准库实现差异,逐条归因、不修复),通过率 98.2%;test_package 消费者用例 5/5;W3 本地 CI 与远程 CI 各 1 轮绿;1 条知识草稿(E429)随 PR 入仓。PR !13202 已于 2026-09-29 合入 main,制品仓在合入后约 10 分钟自动上传。

IWYU 是 Clang 22 前端工具,鸿蒙 PC 上的难点不在编译(build 阶段实测不到 2 分钟),而在让上游 227 条测试在 OHOS 上跑通——标准库头在哪里、怎么注入才不破坏 IWYU 的头文件归属判断、clang-cl 驱动模式下参数怎么注入、签名二进制怎么过沙箱,都是上游从未遇到的问题。本文记录 5 个坑(含 3 处自曝误判)与完整的分层验证证据链。

声明(结论边界):

  • tests/bugs 回归套件(137 文件)与 tests/stdin(5 文件)未跑:上游默认不注册 ctest(XFAIL 套件,上游声明主要在 Linux GCC/Clang 环境运行),豁免证据已入 test_package/MANIFEST.yml;
  • 3 条 e2e 失败是标准库实现差异(OHOS libc++/musl vs 上游 libstdc++/glibc),非适配缺陷,未修复——修复 = 改上游期望值或改标准库,超出适配范围;
  • 全部结论限定于:本设备 HarmonyOS PC aarch64 真机 + 本构建配置(conan profile ohos-aarch64)。

1. 背景:为什么值得做

  • 生态价值:IWYU 是 Google C++ 代码卫生体系的标准工具,用于清理 C++ 工程里冗余的 include——减少编译依赖、提升增量编译效率。鸿蒙 PC 原生 C/C++ 开发正处上升期,引入这类工具链是代码质量工程的基础建设;
  • 补链价值:制品仓已有 llvm/22.1.0(PR #4759)与 clang/22.1.8(PR #3868,llvm-project 单仓构建,含 LLVM+Clang 一体),Clang 22 工具链族只差头文件分析工具。IWYU 0.26 的 release note 声明仅兼容 Clang 22(“Compatible with Clang 22”),与现有包版本天然对齐,适配后即插即用;
  • 难度价值):这个包"编译"阶段不到 2 分钟——真正的难度在测试阶段:227 条上游测试必须在真机全量跑通,要求解决 iwyu(Clang 22 内置 driver)在 OHOS 上的标准库头搜索问题、clang-cl 驱动模式的参数注入、以及 OHOS 代码签名沙箱约束。"编译易、测试证据链难"正是高难度挑战赛道要覆盖的任务类型。

2. 环境与差异前置

2.1 环境(全部为当事机实测值或标注来源)

项值测量来源
设备HUAWEI MateBook Pro(HAD-W32)设置页(用户确认)
系统HarmonyOS 6.1.0(HongMeng Kernel 1.12.0)设置页(用户确认)/ uname -a
架构aarch64uname -m 实测
Conan2.29.1(社区 OHOS 适配版,os=OHOS 为有效枚举)conan --version 实测
构建 profileci/conan/profiles/ohos-aarch64:armv8 / Release / clang 15 / c++17 / libc++ / os=OHOS仓库 profile 文件;conan profile show
iwyu 源码编译驱动clang/clang++ 15.0.4(设备 /data/service/hnp/bin)profile compiler_executables;适配笔记
iwyu 内置前端Clang 22.1.8(llvm/22.1.0 + clang/22.1.8 依赖包)iwyu --version 实测输出
上游源codeload.github.com 官方 tag 归档(0.26 tag 固定)conandata.yml;本机 curl -I 实测 HTTP 200(2026-10-04)
SHA-256ca3f157a5e6bf293cfb2fea585b103ec87245d02eaee0b6ab832665e740016eb(1146969 B)conandata.yml
OHOS SDKohos-sdk_26.0.0.18profile buildenv;test_package 实际路径

注明:conan profile 的 os.version=6.0 为配置值(配置滞后),实机为 HarmonyOS 6.1.0,本次构建未触发版本敏感分支,不影响构建。

2.2 依赖(W0 适配前核验,全部已在 ohpcd 制品仓)

依赖版本来源 PR用途
llvm22.1.0#4759LLVMConfig 提供方
clang22.1.8#3868ClangConfig / clang-cpp 提供方(llvm-project 单仓构建,含 LLVM+Clang 一体)
zlib1.3.2#3929压缩依赖
zstd1.5.7#1900压缩依赖
xz5.8.3.1#5991压缩依赖
libedit20240808#2845命令行编辑
z34.15.4#4801可选(SMT 求解器)

7 个直接依赖全部已发布(W3 日志 L0i 依赖门禁 7/7 [ok]),无未发布依赖断档,依赖链直接可用。

2.3 版本号 0.26.src 的含义

上游官网声明 0.26 “equivalent to the 0.26 tag and clang_22 branch”。归档版本号 = 上游版本 + 源码标记 .src;制品仓不支持同版本多 revision 并存(上传新 revision 会被 409 拒绝),后续若有适配修复将递增后缀(0.26.src.1、0.26.src.2…),全程 0.26.src 统一。


3. 适配过程:5 个坑(12 条难度台账归并)

适配笔记(notes.md)逐条记录了 12 条适配问题,按类别归并为 5 大坑;其中 #2(init-build 启发式把 CMake 误判为 autotools)无实质影响——lang-preflight 已正确判为 cmake,配方按 CMake 手写,不单独展开。每坑按"现象 → 根因 → 解决 → 验证"记录,3 处自曝误判已明确标出。

3.1 坑 1 源获取:release 资产 404 → codeload 官方归档 → conan BadZipFile

  • 现象:官方 release 资产链 releases/download/0.26/0.26.tar.gz 在本机返回 HTTP 404(设备出口拦截层);github.com 主域 curl 直连 TCP 超时不可达;
  • 解决:改用 GitHub 官方 tag 归档后端 codeload.github.com(与 0.26 tag 归档同源,非第三方镜像),curl 实测完整下载成功,sha256 已记录;
  • 后续小坑:conan create 的 source() 阶段报 BadZipFile: File is not a zip file——conan 2.29 的 get()→unzip() 按文件名后缀判定压缩格式,codeload URL 的 basename 是 tag 名 0.26(无扩展名)→ 回退 zip。解决:conandata sources 显式增加 filename: "include-what-you-use-0.26.tar.gz"(get() 透传该值作为判定名,sha256 仍校验实际内容,不受影响);
  • 细节:W3 运行时 worker 无 curl,框架预下载阶段 9 次尝试全部失败([Errno 2] No such file or directory: 'curl'),自动降级到 conan 内置下载(不依赖 curl)取源成功——这条降级路径本身成为 CI 复现的最终形态;
  • 验证:source 下载解压通过,sha256 校验一致;已沉淀为知识草稿 E429(见 §5)。

3.2 坑 2 平台识别:uname -s=HarmonyOS 不在 LLVM 平台表

  • 现象:cmake configure 失败,HandleLLVMOptions.cmake:249 报 “Unable to determine platform”;
  • 根因:LLVM 22 的平台分支只认 Linux/Darwin/Windows 等已知平台,设备 uname -s 输出 HarmonyOS;
  • 解决:新建 Platform/HarmonyOS.cmake(内容一行 include(Platform/Linux)),放 build 目录 platform-modules/ 并 -DCMAKE_MODULE_PATH 注入;不设 CMAKE_SYSTEM_NAME(保持 CMAKE_CROSSCOMPILING=FALSE,llvm/clang 配方同款先例);
  • 验证:configure rc=0,“LLVM 22.1.8 检出、Python3 检出”,ctest -N Total Tests: 227。该文件是 build 目录产物,不是上游源码修改。

3.3 坑 3 标准库头:CPATH → shim → -isystem(含 2 处误判)

  • 现象:iwyu 运行报 fatal error: 'vector' file not found——clang 包不含 C++ 标准库头,iwyu 内置 driver 的默认搜索路径(/usr/include/c++…)在 OHOS 设备上不存在;
  • 误判 1:先试 CPATH 类环境变量注入头目录 → 25 条 e2e 失败。根因:clang 把 CPATH 目录归为 user include,而 IWYU 的头文件归属判断以 system include 分类为前提(上游 CI 语义 = /usr/include),分类污染直接破坏归属;
  • 误判 2:再试 builtin 头覆盖 C 库 stdint.h 绕开 musl 的 __NEED_* 机制 → stdio.h:249: unknown type name 'uint64_t'、cstddef:50: no member named 'nullptr_t'(::nullptr_t 仅编译器 builtin stddef.h 在 C++ 模式提供);
  • 最终解决:-isystem 三重注入——clang 包 resource dir builtin 头 + SDK libcxx-ohos C++ 头 + SDK sysroot C 头。builtin 头优先于 sysroot,顺序由 clang driver 保证:builtin stddef.h 先行提供 nullptr_t,C 库头走 sysroot -isystem(system include 分类,与上游 CI 语义一致);
  • 验证:224 条 e2e 全部按此跑通(§4.1);CPATH 方案与"尾部追加 -isystem"列入 notes.md 禁止事项。

3.4 坑 4 驱动模式 wrapper:两处打穿 -isystem 注入的测试分支(含 1 处误判)

  • 现象 1:3 条 clmode 测试(cl driver 模式)报 “unknown argument ignored in clang-cl”——clang-cl driver 拒绝 -isystem/–sysroot 等非 MSVC 风格参数;
  • 现象 2:dashdash 测试(IWYU_ARGS=-c --)报 “no such file or directory: ‘-isystem’”——run_iwyu_tests.py 把额外参数追加在测试参数之后,-- 之后的 -isystem 被当成输入文件;
  • 误判:排错期间发现设备预装 /data/service/hnp/bin/grep 是损坏 ELF(“cannot execute binary file”),shell grep 静默失败,多次误判"无匹配";另有一次测试文件 IWYU_ARGS 的 grep 视图为 -clang-cl、实为 --driver-mode=cl(文件系统瞬时视图不一致)。对策:关键文件内容核验一律改用 python3 逐行读,cl 模式判定同步修正;
  • 解决:测试 wrapper 脚本 iwyu-wrapper.sh 按参数分支——参数含 -clang-cl/--driver-mode=cl* → 纯透传(这 3 条测试不含系统头);否则前置 3 个 -isystem 到所有参数之前(driver 侧,避开 dashdash 的 --)。经 CTestTestfile.cmake(build 目录生成物)替换 iwyu 路径注入,上游源码不动;
  • 验证:224 条 e2e 全过(含 clmode 3 条、dashdash 1 条)。

3.5 坑 5 签名沙箱:OHOS XPM 拒收未签名二进制

  • 现象:刚编出来的 iwyu 二进制执行被 OHOS XPM 拒绝(未签名);
  • 解决:llvm-objcopy --remove-section .codesign 去旧签名段 + binary-sign-tool sign -inFile <bin> -outFile <bin> -selfSign 1 自签(llvm/clang 配方同款流程);
  • 验证:签后 iwyu --version 实测输出 include-what-you-use 0.26 based on clang version 22.1.8。打包阶段 4 个二进制(libclang-cpp.so.22.1 / libLLVM.so.22.1 / libc++_shared.so / bin/include-what-you-use)逐个自签,W3 日志 4× write code sign data success;
  • 附带测试环境约束:py 测试 fix_includes_test 要求 IWYU_BINARY 环境变量(fix_includes.py 内无默认值,上游 CI 在 Actions 环境注入),ctest 环境显式注入 wrapper 路径;iwyu_tool_test 自管理该变量(seed/restore),不受影响。

4. 验证(分层,禁止相加)

验证分四层:① 上游全量 ctest(套件维度)② test_package 消费者用例(消费者维度)③ W3 本地 CI(流水线维度)④ 远程 CI 与合入发布(过程维度)。各层数字口径独立,互不相加。

4.1 第一层:上游全量 ctest——223/227 = 98.2%

  • 清点(R51,构建前):ctest 总 227 条 = 1 gtest 入口(内含 3 个测试文件,单入口跑全部 gtest 用例)+ 224 e2e(tests/c 9 + tests/cxx 191 + tests/driver 24,每文件 = 1 条 run-test-*:iwyu 分析 + FileCheck 校验)+ 2 py(fix_includes_test / iwyu_tool_test);
  • 执行:ctest -j4 --output-on-failure(build 目录;环境配方:PATH 前置 clang 包 bin + build/bin,LD_LIBRARY_PATH=clang 包 lib,IWYU_BINARY=wrapper,完整命令见 §4.7②);
  • 结果(真机实测于 2026-09-27):N=227,M=223 通过,S=1 跳过,F=3 失败,通过率 98.2%(≥90% 目标达成),Total Test time 20.98s;2026-10-04 按同配方复跑,结果一致(223/1/3),Total Test time 16.77s——构建树至今可直接复跑,图 1 即拍自该复跑;
  • 跳过 1 条:cxx.test_ms_inline_asm(SKIP 码 77 合法跳过——MSVC 专属 inline asm 测试,上游在非 MSVC 环境本就跳过);
  • 执行形态说明:224 条 e2e 为测试文件原位执行——上游测试 .cc 与 FileCheck 期望文件零修改(强于断言级 1:1 移植),边界是"文件未改,执行环境为 OHOS"。

在这里插入图片描述

*IWYU 0.26 上游全量 227 条测试真机运行(223 过 / 1 跳 / 3 标准库差异失败)

4.2 3 条失败逐条归因(标准库实现差异,不修复)

3 条失败全部是 OHOS 标准库(libc++/musl)与上游 CI 标准库(libstdc++/glibc)的实现差异,非适配缺陷:

#用例差异实测 vs 期望
1cxx.test_badinc#include <string> 的归属注解期望 for basic_string, string;实测 for allocator, basic_string, char_traits, string(OHOS libc++ 的 std::string 经 allocator/char_traits 间接使用,libstdc++ 不展开;include 建议本身一致,均建议加 <string>)
2cxx.test_libbuiltinsstd::pow(float, float) 归属诊断实测输出 pow(float, float) is defined in <cmath>(libc++ 的 cmath using-decl 可见性差异),与上游期望 regex 无对应行
3cxx.test_std_size_tsize_t 归属判定glibc 下期望建议 stdio.h → cstdio 替换;OHOS musl 的 stdio.h 直接定义 size_t,iwyu 判定 #include <stdio.h> 已正确

为什么不修:修复这 3 条要么改上游的 FileCheck 期望值(违反零修改原则),要么改标准库(超出适配范围)。

4.3 豁免声明(bugs 137 文件 / stdin 5 文件未跑)

  • tests/bugs(56 目录 / 137 文件):XFAIL 回归套件(复现 open issue,IWYU_XFAIL 标记),上游 CMake 默认不注册 ctest(需 --extra-suite=bugs 显式加入),上游 README 声明该套件主要在 Linux GCC/Clang 环境运行;
  • tests/stdin(5 文件):上游以 iwyu-run-stdin-tests.bash 手动执行的冒烟套件,仅验证 iwyu 无错误完成;
  • 豁免证据:test_package/MANIFEST.yml(上游测试声明与豁免清单)。两者以"未运行"单独计入统计,不并入通过率。

4.4 第二层:test_package 消费者用例——5/5

test_package 真实调用被测二进制(R34 实质测试),C1-C3 共 5 个断言点:

用例内容断言结果
C1 基础头分析c1_bad.cc 用了 std::vector 但漏 #include <vector>rc=0;报告含 “should add these lines” 且含 #include <vector>;<iostream>/<string> 未被误删通过
C2a 确定性输出与退出码(0.26 对 --json 用例的等价)违规文件 + -Xiwyu --errorrc=1 且输出含 “should add”通过
C2binclude 正确的文件 + -Xiwyu --errorrc=0 且输出含 “has correct #includes/fwd-decls”通过
C3 文件改写(0.26 对 --fix_headers 用例的等价)iwyu 报告 2>&1 | fix_includes.py 管道改写“IWYU edited 1 files”;改写后含 consumer_a.h、不含 consumer_b.h;改写后 clang++ -fsyntax-only rc=0通过

0.26 能力边界说明:iwyu 0.26 无 --json 选项(实测 0.26 的选项列表确认),文件改写由官方配套 fix_includes.py 完成(iwyu 报告 | fix_includes.py 管道用法),且 iwyu 报告输出在 stderr(管道必须 2>&1)。C2/C3 按 0.26 实际能力等价实现,断言强度不减。CI 复跑真实输出摘录:

include-what-you-use 0.26 based on clang version 22.1.8
c1_bad.cc should add these lines:
#include <vector>    // for vector
(c2_ok.cc has correct #includes/fwd-decls)
>>> Fixing #includes in '…/c3_run.cc'
IWYU edited 1 files on your behalf.

4.5 第三层:W3 本地 CI——1 轮全过

W3(本地 CI 模拟,与 CI 同一套 build_and_test.sh 脚本)2026-09-27 14:37 按最终配方复验:

  • 门禁:G0 知识图谱(541 条一致)/ G0e 根目录白名单 / L0(L0i 依赖 7/7 [ok]、L0j 版本首次发布、L0k commands.json type=tool)/ KC 知识库质量 0 错 / JC 垃圾文件 0(JC6 单软件原子性)全部通过;
  • conan create:build → package → 签名 → test_package 全流程,Build Summary:Total 1 / Success 1 / Failed 0(Pass rate 100.0%);
  • 产物:包内容 8 类共 296 文件——bin/include-what-you-use 可执行 + fix_includes.py + iwyu_tool.py + 13 个 .imp 映射文件 + libclang-cpp.so.22.1 + libLLVM.so.22.1 + libc++_shared.so + 274 个头文件 + module.modulemap + basic_string.tcc + man 页;
  • 签名:4 个二进制自签全部成功(4× write code sign data success,09-27 14:36:31-34 时间戳);
  • .ci-result.json:由 finish 自动生成(含日志 SHA256 2b6d96ba…f6f914,防伪造),submit 校验哈希匹配;
  • 细节:L2 矩阵项 “include-what-you-use --version failed (non-blocking)” 是裸跑(无 LD_LIBRARY_PATH,动态库无法解析)的预期 rc≠0;conan 测试环境(VirtualRunEnv)内 --version 实测通过(见 §4.4 摘录),两者不矛盾。L1e 破坏性反向测试同步通过:移走 bin/ 与 lib/ 后测试必然失败,证明测试真实依赖被测包。
    在这里插入图片描述
    *conan create 一条命令复现(构建 + 签名 + 消费者测试 5/5)

4.6 第四层:合入与发布记录

在这里插入图片描述

*atomgit PR 合入记录页

4.7 快速复现(3 条命令,真机逐条验证过)

① conan create 全流程(构建 + 打包 + 签名 + 消费者测试;在 build_in_harmonyos 仓库根目录执行,build 阶段实测 <2min):

conan create archives/i/include-what-you-use/0.26.src \
  -pr:h=ci/conan/profiles/ohos-aarch64 \
  -pr:b=ci/conan/profiles/ohos-aarch64

应看到:write code sign data success ×4、include-what-you-use 0.26 based on clang version 22.1.8、IWYU edited 1 files on your behalf.、[ok] include-what-you-use/0.26.src — conan create passed、Build Summary Success: 1。

② 上游全量 ctest 复跑(在已有构建树内;本机构建树 $HOME/tmp/builds/iwyu-0.26.src.build 保留,2026-10-04 复跑验证通过):

export BUILD=$HOME/tmp/builds/iwyu-0.26.src.build
export CLANGPKG=$HOME/.conan2/p/clang86483f2566f6b/p   # clang/22.1.8 包目录
export PATH=$CLANGPKG/bin:$BUILD/bin:$PATH
export LD_LIBRARY_PATH=$CLANGPKG/lib
export IWYU_BINARY=$BUILD/bin/iwyu-wrapper.sh
cd $BUILD && ctest -j4 --output-on-failure

应看到:99% tests passed, 3 tests failed out of 227、109 - cxx.test_ms_inline_asm (Skipped)、FAILED 列表逐条列出 cxx.test_badinc / cxx.test_libbuiltins / cxx.test_std_size_t、Total Test time (real) ≈17–21s(结束行 Errors while running CTest 是 3 条失败的预期提示,不是命令错误)。

③ 打包产物动态依赖核验(<pkg> 换成 conan create 输出的包目录,如 ~/.conan2/p/b/inclucaf72e7c857a2/p):

readelf -d <pkg>/bin/include-what-you-use | grep -E 'NEEDED|RUNPATH'

应看到:NEEDED libclang-cpp.so.22.1 / libLLVM.so.22.1 / libc++_shared.so,RUNPATH $ORIGIN/../lib。


5. 知识沉淀

项内容位置
知识草稿 1 条(E429,待主编审核)conan get() 按 URL basename 扩展名推断压缩格式:无扩展名 URL(codeload tag 归档类)回退 zip 报 BadZipFile——方案:conandata 增加 filename 字段knowledge/drafts/E429-draft-A141.{kv,md}(随 PR 入仓)
5 项非源码适配清单① Platform/HarmonyOS.cmake(build 目录平台模块)② iwyu-wrapper.sh(测试环境驱动分支脚本)③ conanfile.py(配方)④ conandata.yml(codeload 源 + filename 字段)⑤ test_package(C1-C3 消费者用例)archives/i/include-what-you-use/0.26.src/

上游源码 0 修改、patches/ 为空(R8:无平台宏、无源码补丁)——5 项适配全部落在"配方 + build 目录产物 + 测试"层。


6. FAQ

Q1:版本号 0.26.src 是什么意思?
上游 0.26 tag 的源码。归档约定"上游版本 + 适配后缀":制品仓(cnb)不支持同版本多 revision 并存(新 revision 上传会被 409 拒绝),.src 表示 tag 源码直取,后续如有适配修复递增后缀(0.26.src.1、…)。

Q2:为什么用 codeload 源而不是官方 release 资产 0.26.tar.gz?
官方 release 资产链在本机返回 404(设备出口拦截层),github.com 主域 TCP 不可达(2026-09-27 实测);codeload.github.com 是 GitHub 官方的 tag 归档后端,与 0.26 tag 归档同源(非第三方镜像),实测可完整下载且 sha256 已钉死。CI 侧已知限制如实记录在 notes.md:build_and_test.sh 的镜像回退仅覆盖 github.com/release-assets 域名,codeload 无镜像——若未来 CI worker 下载失败,需将 conandata url 切换为 release 资产链并递增版本后缀(本轮未发生)。

Q3:3 条 e2e 失败为什么不修复?
均为标准库实现差异(libc++/musl vs libstdc++/glibc 的归属判定),不是适配缺陷。"修复"只有两条路:改上游的 FileCheck 期望值(违反零修改原则)或改标准库(超出适配范围),故不修复并逐条归因(§4.2)。

Q4:tests/bugs 137 文件与 tests/stdin 5 文件为什么不跑?
上游设计上默认不注册 ctest:bugs 是 XFAIL 回归套件(需 --extra-suite=bugs 显式加入,上游 README 声明主要在 Linux GCC/Clang 环境运行),stdin 是手动 bash 冒烟。豁免证据在 test_package/MANIFEST.yml,统计上以"未运行"单独列出,不算"通过"。

Q5:profile 里 os.version=6.0,实机却是 HarmonyOS 6.1.0?
os.version 是 conan profile 的配置值(配置滞后),用于包 ID 与 recipe 分支判定;本次构建未触发版本敏感分支,不影响实际构建。实机版本以设置页为准(HarmonyOS 6.1.0)。


7. 总结

量化盘点:

指标值
上游源码修改0(patches/ 为空)
非源码平台适配项5
notes.md 难度台账12 条
上游测试223/227 通过(98.2% = 223 过 + 1 跳 + 3 败)
test_package 消费者用例5/5
W3 本地 CI1 轮通过(日志 SHA256 2b6d96ba…f6f914)
远程 CI通过
知识草稿1 条(E429)
合入、制品仓发布2026-09-29

这个包验证了"编译易、测试证据链难"这一类高难度挑战任务形态:对 CMake 承载的 Clang 22 前端工具,鸿蒙 PC 适配的成本不在编译,而在测试阶段的"标准库搜索路径 + 驱动参数 + 签名沙箱"三件事组合。12 条难度台账与 5 项适配清单已全部入仓,可复用于后续 Clang 生态工具(clang-tidy 等同族工具)的适配。

参考链接

  • PR:https://atomgit.com/OpenHarmonyPCDeveloper/build_in_harmonyos/merge_requests/13202
  • 合入 commit:https://atomgit.com/OpenHarmonyPCDeveloper/build_in_harmonyos/commits/detail/8e38008baef92bbbb378612a2ec2548bff1de4eb
  • 关联 Issue:https://atomgit.com/OpenHarmonyPCDeveloper/build_in_harmonyos/issues/3518
  • 上游仓库:https://github.com/include-what-you-use/include-what-you-use
  • 制品仓核验:conan download "include-what-you-use/0.26.src" -r=ohpcd --only-recipe
Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐