C++ 工程化
围绕构建系统、命名规范和工程组织方式的实践整理。
-
C++ 工程化(二):命名规范没有统一标准但有底线规则
C++ 没有统一的命名规范,主流风格(STL/Google/LLVM/Qt/Unreal)各自为政——这是 C++ 40 年多时代叠加的历史遗留问题。但"没有统一标准"不等于"怎么写都行":C++ 标准对保留标识符有硬性规定,违反就是 UB;宏必须全大写也是跨风格的唯一共识。实操铁律是:进入已有 codebase 严格 follow,新建项目选一个成熟 style guide 一以贯之,并用 clang-format 强制执行——风格选择的质量远不如风格一致性的质量重要。
-
C++ 工程化(一):Modern CMake 的核心是 target-based 与传递性语义
CMake 不是构建系统而是构建系统生成器(读 CMakeLists.txt → 生成 Makefile / Ninja / VS 工程 / Xcode 工程)。Old-Style CMake 靠 includedirectories、adddefinitions 这种全局命令驱动,无作用域、无传递性、无法组合;Modern CMake(3.15+ 是真正的基线)把一切挂在 target 上,用 PUBLIC/PRIVATE/INTERFACE 显式表达"这个使用需求是只给我自己用,还是要传递给 consumer"。掌握这三个关键字 + generator expressions($<...>)+ CMakePresets.json + FetchContent,就写得出 2026 年的 idiomatic CMake。