Files
build_infra/0_cmake_library/AGENTS.md
T
2026-06-16 10:23:51 +08:00

1.9 KiB

项目指令

CMake 规则

  • 禁止在任何 CMake 代码中使用 cmake_parse_arguments
  • 函数参数存在性检查、枚举值检查优先使用已有函数;没有合适函数时,创建新的小型专用函数。
  • 优先使用显式位置参数,其他配置项优先通过 target 属性实现,避免依赖大量全局变量。。

CMake 格式规范

  • 禁止松散、无意义的空行, 代码保持紧凑。

CMake 命名规范

  • 项目自定义名称优先使用小写 snake_case
  • 名称必须表达明确用途,禁止使用无语义或含糊缩写。
  • 项目自定义 function() 使用小写 snake_case
  • 公共函数必须带项目或模块前缀,例如 sun_cat_add_library()
  • 内部辅助函数以下划线开头,并带项目或模块前缀,例如 _sun_cat_check_required_arg()
  • 不要新增无前缀的全局函数。
  • 局部变量使用小写 snake_case,例如 target_namesource_filesinclude_dirs
  • 布尔变量使用明确谓词形式,例如 is_header_onlyhas_public_sourcesenable_install
  • 自定义 target 属性使用大写 SNAKE_CASE,并带项目或模块前缀,例如 SUN_CAT_LIBRARY_KIND
  • CMake 模块文件使用小写 snake_case,例如 sun_cat_library.cmake
  • 如果已有文件存在稳定命名风格,优先保持当前文件一致性;但不得违反本项目禁用规则。

组装脚本规范

  • 组装脚本时候功能通常是模块化的 一半都是输出字符串函数 字符串脚本落盘函数 脚本封装成 add_custom_target 函数组装的add_custom_command函数
  • 多层结构出现的,每层需要复用
  • 当函数需要组装powershell脚本 cmd脚本时候,注意编码格式,windows系统是GBK,项目文件,全局都是utf8 with bom
  • 注意有些古老工具 chcp 65001 并不能输出utf8编码,这是就要尽量考虑输出文件方案,规避乱码问题