3.5 KiB
3.5 KiB
C++ 工具链与验证命令(模板)
本文件提供一份通用占位模板,用于在不同 C++ 项目中快速补齐“工具链与如何验证”的关键上下文。
1. 工具链(必填)
1.1 编译器与标准
- C++ 标准:C++23(含 Modules)
- 编译器:
- 目标平台:Windows(通过 Linux 交叉编译)
- 主机平台:Linux
- 工具链:
clang <版本>(交叉编译;具体 clang 可执行路径由 Conan profile 配置) - 目标三元组(示例):
x86_64-w64-mingw32/aarch64-w64-mingw32
1.2 构建系统
- CMake:
>= 4.0 - 生成器:
- Linux:
Ninja
- Linux:
1.3 依赖管理(Conan,推荐)
若项目使用 Conan 管理三方依赖,建议:
- Conan:
2.x(本 Playbook 假设 Conan 2;不保证 Conan 1 的兼容性) - 使用
conanfile.txt+CMakeDeps+CMakeToolchain+cmake_layout(参考tsl-devkit/lsp-server/conanfile.txt)。 - 通过
conan install生成工具链与(可选)CMake Presets,再用cmake --preset ...构建。
1.4 格式化(必选)
clang-format:<项目自选并固定版本>- 兼容性策略:
.clang-format是唯一真相(推荐使用templates/cpp/.clang-format落地到项目根目录)。- 不同版本的
clang-format可能对同一配置产生不同输出;项目应在 CI/开发环境中固定版本,避免格式漂移。 - CI 推荐用
clang-format --dry-run --Werror <files...>做格式校验。
1.5 静态检查(暂不启用)
clang-tidy:暂不启用(若未来启用,写明版本、配置文件与运行命令)
2. 验证命令(必填:把占位符替换成真实命令)
2.1 最小构建(必须能跑)
- Conan 生成(推荐,示例):
CONAN_HOME=/tmp/conan-home conan install . -pr:b=conan/profiles/linux-x86_64-clang -pr:h=conan/profiles/windows-x86_64-clang-cross -of build/windows-x86_64-clang-cross --build=missing
- 配置(示例):
cmake --preset conan-release
- 构建(示例):
cmake --build --preset conan-release -j 8
2.2 运行冒烟(建议)
build/<app_or_tool> <args>- 或:
cmake --build build -t run_smoke(如项目提供自定义 target)
2.3 格式化检查(建议)
clang-format -i <files...>(本地)clang-format --dry-run --Werror <files...>(CI)
2.4 失败处理约定(必填)
- 只修复与本次改动直接相关的失败;无关失败记录并隔离。
- 若某步骤无法执行(缺环境/缺权限),必须写出原因与替代验证(例如手动检查清单/最小复现工程)。
3. Presets(可选但强烈推荐)
参考 tsl-devkit 的做法:
- 将
CMakeUserPresets.json纳入版本控制,并includeConan 生成的build/.../generators/CMakePresets.json。 - 优点:统一 Windows/Linux/macOS 构建入口;Agent 也更容易用固定命令验证。
本 Playbook 约定:
- 强制统一 preset 名称:
conan-release/conan-debug(项目必须提供这两个 preset;实现方式不限:可由 Conan 生成,也可由项目自建CMakePresets.json适配)。 CMakeUserPresets.json不是强制标准,仅作为一种推荐落地方式(模板见templates/cpp/CMakeUserPresets.json)。
不在本 Playbook 中强制规定工具链分发方式(例如某种特定打包形态);只要求把交叉编译所需的 compiler_executables、triplet、system_name 等写进 Conan profile,保证命令可复现。