Skip to content

C++ 完整构建实践:库、CLI、测试与安装后消费 · P2Report怎样配置构建测试安装和消费至一手资料与验证边界 ​

返回分篇目录

本系列以前置值语义、RAII、基本线程/函数接口为基础。示例未执行;本轮仅完成静态文本与模板核对,不将预期输出称为实际运行结果。

专题入口:C++ 大型构建模型:目标图、阶段与缓存 · C++ 构建依赖:PUBLIC、私有头与可搬移包 · C++ 完整构建实践:库、CLI、测试与安装后消费 · C++ 构建排错:头文件、包发现、配置与规模

P2Report怎样配置构建测试安装和消费 ​

P2Report怎样配置构建测试安装和消费:README 提供从配置、构建、CTest、局部安装到独立消费的完整命令与预期输出,分别写明 PowerShell 和 Bash/Zsh 获取绝对前缀的办法。必须先构建 release,再安装 out/release;安装不能凭空编译缺失归档。

所有命令只供读者后续执行,本轮未运行 CMake configure/build/install 或 CTest。Ninja 需要环境中存在可工作的编译器;Windows 应先进入开发者 PowerShell。目标系统、架构与运行库必须一致,不能把 Linux 归档传给 Windows 消费者作同一验收。

若只需审查本项目,不要运行 README 中的命令,也不要为得到绿色结果下载 Ninja 或编译器。本批静态检查验证正文引用、源文件存在、JSON、目录/路线/答案片段与 Vue 模板;不验证 CMake 命令执行语义或 C++ 编译正确性。

P2Report怎样验收Release与安装接口 ​

P2Report怎样验收Release与安装接口:测试不用 assert,因而 Release 的 NDEBUG 不会移除输入输出判断;独立 consumer 则只看安装包,验证公共头、C++20 要求与链接关系是否传播。两类验收解决不同问题,不能互相代替。

预期 tests 输出 report: contracts passed,consumer 输出 consumer bytes=4 newlines=1,都退出0。负例包括公共头目录误改 PRIVATE、漏装 Config、漏导出 options、消费者使用错误架构包;应按配置/编译/链接/运行阶段分别记录失败。负例和正例本轮均未执行。

后续真实验证还应记录 configure/build/test/install/consumer 每步退出码及工具链版本,并把完整安装前缀搬到新目录重配 consumer。只有取得这些记录才可宣称安装接口已验证;当前交付是完整教学工程和静态检查。

练习与自检 ​

新增一个仅供 report.cpp 使用的内部头,预测其修改应重编哪些目标;再把同样声明移到公共头比较。

参考答案与判断依据

内部头修改通常仅使包含它的库翻译单元重编,依赖可执行文件需重链接;公共头修改可能让库、CLI、测试、consumer 的包含者重编。实际增量行为取决于后端依赖扫描,应在后续有授权的环境中观察构建日志,本轮不运行。

一手资料与验证边界 ​

2026-10-17核对 CMake 3.28 Presets、导入导出指南、PackageConfigHelpers。版本固定用于教学,不作最新版本承诺。没有运行编译器、CMake配置/生成/构建/安装或CTest。

继续阅读