cmake
CMake
用途
引导完成以目标为核心的现代 CMake(C/C++ 项目):源外构建、依赖管理、生成器选择,以及与 CI 和 IDE 的集成。
触发场景
- "如何为项目编写 CMakeLists.txt?"
- "如何用 CMake 添加外部库?"
- "CMake 找不到我的包/库"
- "如何在 CMake 中启用 Sanitizer?"
- "如何用 CMake 进行交叉编译?"
- "如何使用 CMake Presets?"
工作流程
1. 现代 CMake 原则
More from killvxk/low-level-dev-skills-zh
binutils
GNU binutils 二进制操作与分析技能。适用场景:使用 ar 管理静态库、使用 strip 或 objcopy 处理二进制文件、使用 addr2line 将地址转换为源码位置、使用 strings 提取文本、或使用 c++filt 对 C++ 名称进行反混淆。触发条件:涉及 ar、strip、objcopy、addr2line、strings、c++filt、ranlib 或二进制后处理任务的查询。
1ebpf
Linux 可观测性和网络的 eBPF 技能。适用场景:使用 libbpf 或 bpftrace 编写 eBPF 程序、挂载 kprobe/tracepoint/XDP 钩子、调试验证器错误、使用 eBPF map,或实现跨内核版本的 CO-RE 可移植性。触发条件:查询 eBPF、bpftool、bpftrace、XDP 程序、libbpf、验证器错误、eBPF map 或使用 BPF 进行内核追踪相关问题。
1clang
C/C++ 项目的 Clang/LLVM 编译器技能。适用场景:使用 clang 或 clang++ 进行诊断、sanitizer 插桩、优化备注、通过 clang-tidy 进行静态分析、通过 lld 实现 LTO,或从 GCC 迁移到 Clang。触发条件:涉及 clang 标志、clang-tidy、clang-format、更好的错误信息、Apple/FreeBSD 工具链或 LLVM 特定优化的查询。涵盖标志选择、诊断调优及与 LLVM 工具的集成。
1gcc
C/C++ 项目的 GCC 编译器技能。适用场景:选择优化级别、警告标志、调试构建、LTO、sanitizer 插桩,或诊断 GCC 编译错误。涵盖调试与发布构建的标志选择、ABI 问题、预处理器宏、配置引导优化(PGO)及与构建系统的集成。触发条件:涉及 gcc 标志、编译错误、性能调优、警告抑制或跨标准编译的查询。
1cpp-modules
现代 C++ 项目的 C++20 模块技能。适用场景:使用命名模块、模块分区、头文件单元、CMake MODULE_SOURCES、Clang -fmodules-ts、BMI 缓存问题,或从头文件迁移到模块。触发条件:涉及 C++20 模块、import 语句、模块接口单元、头文件单元或 BMI 文件的查询。
1binary-hardening
二进制加固技能,用于安全加固的 C/C++ 构建。适用场景:启用 RELRO、PIE、栈金丝雀、FORTIFY_SOURCE、CFI sanitizers、影子栈,或 seccomp-bpf 系统调用过滤。涵盖 checksec 分析、用于加固构建的编译器和链接器标志,以及 NSA/CISA 推荐的缓解措施。触发条件:查询涉及二进制加固、checksec、RELRO、PIE、栈金丝雀、FORTIFY_SOURCE、CFI、影子栈,或 seccomp。
1