news 2026/8/22 15:43:50

cmkr是什么:为什么这个能自动写CMakeLists.txt的C++构建系统值得你关注(完整项目概览)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
cmkr是什么:为什么这个能自动写CMakeLists.txt的C++构建系统值得你关注(完整项目概览)

cmkr是什么:为什么这个能自动写CMakeLists.txt的C++构建系统值得你关注(完整项目概览)

【免费下载链接】cmkrModern build system based on CMake and TOML.项目地址: https://gitcode.com/gh_mirrors/cm/cmkr

cmkr(读作 "cmaker")是一个基于 CMake 和 TOML 的现代 C++ 构建系统:它解析一个简洁的cmake.toml文件,自动为你生成规范、可读的CMakeLists.txt。你只需要 CMake 和一套 C++ 编译器就能使用它,无需额外安装任何软件。对深受 CMake 脚本复杂语法困扰的开发者来说,这是一个"开箱即用"的免费构建工具。

为什么需要 cmkr:告别 CMake 学习曲线

写 CMake 和写 C++ 一样难,但没人真的想学 CMake——构建系统理应"直接能跑"。CMake 本身是一门图灵完备的脚本语言,大项目里它是利器,但对简单项目却显得过度复杂。

cmkr 的解法很聪明:它不取代 CMake,而是替你写 CMake。你的项目生成的CMakeLists.txt与 CMake 生态完全兼容,随时可以"脱离"cmkr 回到纯 CMake,没有任何锁定风险。

💡 官方把 cmkr 称为 "meta-meta-buildsystem",并刻意设计了三层"无缝"体验:不装新软件、改 TOML 自动重新生成、生成的 CMakeLists.txt 人类可读。更多设计思路见哲学页 docs/philosophy.md。

3行TOML代替大段CMake:上手有多简单?

这是 cmkr 最直观的魅力。一个最小项目只需要几行:

[project] name = "cmkr_for_beginners" [target.hello_world] type = "executable" sources = ["src/main.cpp"]

对应的大段project()add_executable()target_*命令全部由 cmkr 自动生成。对比官方示例 tests/basic/cmake.toml,你会发现整个配置一目了然。

从零开始:两条命令引导(Bootstrap)

cmkr 可以"自举"——从项目目录执行引导脚本后即可使用,整个过程不改变你现有的 CMake 工作流:

  1. 获取cmake/cmkr.cmake引导脚本
  2. 运行cmake -P cmkr.cmake完成引导
  3. 修改cmake.toml,然后照常执行cmake -B buildcmake --build build

一旦引导完成,之后每次修改cmake.toml,只需正常构建,cmkr 会自动检测并重新生成CMakeLists.txt。引导脚本仅约 250 行,方便审计;cmake.toml、生成的CMakeLists.txt和脚本本身都建议提交到版本控制。

项目结构一览:这个仓库里都有什么

整个仓库非常精简,结构清晰,方便快速理解:

目录/文件作用
cmake.toml项目自己的构建配置(cmkr 吃自己的狗粮 🍝)
src/+include/cmkr 核心源码:TOML 解析器与 CMake 生成器
cmake/cmkr.cmake自举脚本,负责下载并构建 cmkr 可执行文件
tests/十几个真实场景示例:条件编译、依赖获取、vcpkg 等
docs/官方文档:入门指南、TOML 参考、示例库
third_party/仅 4 个 header-only 依赖,轻量透明

核心逻辑集中在 src/cmake_generator.cpp(TOML → CMake 生成,约 1600 行)与 src/project_parser.cpp(TOML 解析,约 900 行),源码总量仅 3000 余行,读起来毫无压力。

不只是Hello World:功能亮点

cmkr 的能力远超"写个 Hello World",以下特性都在测试目录中有完整示例:

  • 🧩多目标项目:可执行文件、静态/动态库、接口库(interface),支持subdir组织多模块
  • 🔀条件编译:内置windowslinuxmsvcclang等预定义条件,一行ptr64.sources就能按平台添加源文件(见 tests/conditions/)
  • 📦依赖管理[fetch-content]直接声明依赖,并原生支持 vcpkg 工具链(见 tests/fetch-content/ 与 tests/vcpkg/)
  • 🌍多语言:支持 C/C++、CUDA、Objective-C、Fortran、Swift 等十余种语言(见 docs/cmake-toml.md 参考页)
  • 🎛️构建选项[options]声明缓存变量,可用cmake -D选项名=ON在配置期定制
  • 🧹通配符与模板:源文件支持 glob 模式,还能配置文件模板替换(见 tests/globbing/、tests/templates/)

完整选项速查请看官方参考文档 docs/cmake-toml.md,示例索引见 docs/examples/index.md。

企业级友好:安全性与可复现性

对"引导 + 生成代码"的组合心存疑虑的团队,官方专门做了针对性设计(详见 docs/philosophy.md 的 Enterprise 章节):

  • 零额外依赖:只需现有 CMake 与编译器,不引入任何新的供应链风险
  • 可复现构建:引导脚本默认锁定 cmkr 精确版本,同一版本永远生成同一份CMakeLists.txt
  • 完整性校验:可将版本标签固定为 commit hash 并做一致性检查
  • CI 零开销:引导过程在 CI 环境自动跳过,cmkr 只运行在开发者机器上

命令行工具:把构建收进一个二进制

除了项目内嵌使用,你也可以把 cmkr 可执行文件加入PATH,获得一个轻量命令行工具:init(脚手架建项目)、gen(生成 CMakeLists)、build(一键配置并编译)、cleaninstall等,覆盖了日常 C++ 开发的高频操作(参数说明见 include/help.hpp)。

总结:谁应该关注 cmkr?

适合你,如果你:

  • 受够了 CMake 的冗长语法,想要声明式、可读性强的构建配置
  • 希望团队(包括新手)几分钟内就能正确搭建 C++ 项目
  • 想要保留完整 CMake 生态兼容性,随时可平滑退出
  • 企业环境关注可审计、可复现、CI 无额外开销

cmkr 证明了"生成器"路线在 C++ 构建领域的可行性:用 TOML 的简洁表达意图,用 CMake 的强大做底层,两边的好处全都要。如果你正在寻找一个简单、快速、免费的 CMakeLists.txt 自动生成方案,这个 C++ 构建系统值得现在就试试。

【免费下载链接】cmkrModern build system based on CMake and TOML.项目地址: https://gitcode.com/gh_mirrors/cm/cmkr

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 15:42:47

GPT+Stable Diffusion自动化生成电商产品海报实战指南

这次我们来看一个结合GPT与图像生成技术,快速制作电商产品海报的实用项目。对于亚马逊、独立站等电商平台的运营和设计人员来说,制作一张吸引眼球的产品海报,往往需要经历构思、设计、排版等多个环节,耗时耗力。这个项目展示了一种…

作者头像 李华
网站建设 2026/8/22 15:41:31

5个until-async常见坑点:为什么不能直接传Promise实例?

5个until-async常见坑点:为什么不能直接传Promise实例? 【免费下载链接】until-async Gracefully handle Promises using async/await without try/catch. 项目地址: https://gitcode.com/gh_mirrors/un/until-async until-async 是一个轻量级 Ja…

作者头像 李华
网站建设 2026/8/22 15:40:16

OBS 多RTMP同时配信插件完全指南:一次编码,推流多个平台

OBS 多RTMP同时配信插件完全指南:一次编码,推流多个平台 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp obs-multi-rtmp 是一款免费开源的 OBS 多平台同时推流插…

作者头像 李华
网站建设 2026/8/22 15:37:39

Vue 文档编辑器快速上手:5 分钟搭好纸面式在线文档编辑页

Vue 文档编辑器快速上手:5 分钟搭好纸面式在线文档编辑页 【免费下载链接】vue-document-editor :page_facing_up: Paper-sized WYSIWYG document editor for Vue apps 项目地址: https://gitcode.com/gh_mirrors/vu/vue-document-editor vue-document-edito…

作者头像 李华