Skip to content

建议:Mac-M芯片 - LLVM/Clang20+ 增加 Homebrew 做分发主渠道 等 7条建议 #313

Closed

Description

@SuchaharCan

在 开发环境为: Mac-M芯片 - LLVM/Clang20+ + Ninja , 这个就是大部分C++开发者的工具链,
非常推荐 增加 Homebrew作为 分发 渠道,

支持 用户 在仓库中 手动编写 一个 配置文件夹 就能实现 自定义 Homebrew 分发,
等后续 用户下载量上来,申请 添加到 Homebrew 官方分发中;

无需改动代码,只需要添加一个配置文件夹即可,

可借助AI进行 直接生成,
需要说明的是, 自定义分发 暂不支持 流量统计, 可以 自行手动 添加 埋点,

  1. homebrew 支持 两种方式, 一个是 源码到本地手动构建,一个是 拉取预编译包 (推荐第二种)

  2. 若用户 已安装高版本LLVM/GCC( 这个可选功能 我没有 阅读你的 源码, 如果已存在 可忽略) 则无需 二次走 mcpp 内置的 LLVM/GCC版本;

  3. man/help 帮助文档 , 走颜色美化, 一级标题 (Usage, Resource management, About mcpp itself 等 走 淡绿色等 进行 醒目显示)

  4. 命令 自身支持 别名 调用, 虽然用户 可手动编写 别名到自身的shell配置文件中

  5. 留言版 | 使用mcpp工具构建的项目(库/工具/应用)#260
    这个 可做成一个命令, 支持用户 直接 阅读跳转 上传 评阅 相关的项目

  6. 增加 优秀 mcpp 作为模板项目 提供学习阅读 ;

  7. 如果 可以的话, 支持 CMake 与 mcpp 项目 互转译 , 两种 配置文件 相互的 转换 , 这个 功能属于 引擎级 功能, 如果有的话, 会 吸引相当一部分的 CMake 用户, 我自己 就是直接 手动创建 一个 管理 CMake + C++模块的 模板CLI 工具, 如果 该功能实现的话, 那么 CMake用户可以 走你这边 体验 C++ 模块了

Activity

  1. changed the title [-]建议:Mac-M芯片 - LLVM/Clang20+ 增加 Homebrew 做分发主渠道[/-] [+]建议:Mac-M芯片 - LLVM/Clang20+ 增加 Homebrew 做分发主渠道 等 7条建议[/+] on Jul 30, 2026
  2. Sunrisepeak commented on Jul 31, 2026

    @Sunrisepeak
    Member

    Q1: homebrew 支持 两种方式, 一个是 源码到本地手动构建,一个是 拉取预编译包 (推荐第二种)

    A1: 已支持 & 更新了readme - https://github.com/mcpp-community/homebrew-mcpp

    Q2: 若用户 已安装高版本LLVM/GCC( 这个可选功能 我没有 阅读你的 源码, 如果已存在 可忽略) 则无需 二次走 mcpp 内置的 LLVM/GCC版本;

    未来mcpp可能会增加 通用的 外部工具链 定义功能 来解决这个问题

    Q3: man/help 帮助文档 , 走颜色美化, 一级标题 (Usage, Resource management, About mcpp itself 等 走 淡绿色等 进行 醒目显示)

    帮助文档目前建议可以先用仓库文档链接给AI, 具体美化相关 / 主题 ... 后续可能会做成一个可通过配置自定义模式

    Q4: 命令 自身支持 别名 调用, 虽然用户 可手动编写 别名到自身的shell配置文件中

    已支持 xlings install mcpp-short-cmd 可以自动配置 - 详情

    短命令 展开 短命令 展开
    mp mcpp mexpkg mcpp emit xpkg
    mnew mcpp new mxparse mcpp xpkg parse
    mbuild mcpp build mtinstall mcpp toolchain install
    mrun mcpp run mtlist mcpp toolchain list
    mtest mcpp test mtdefault mcpp toolchain default
    mclean mcpp clean mcdir mcpp cache dir
    madd mcpp add mclist mcpp cache list
    mremove mcpp remove mcinfo mcpp cache info
    mupdate mcpp update mcgc mcpp cache gc
    msearch mcpp search milist mcpp index list
    mpublish mcpp publish miadd mcpp index add
    mpack mcpp pack miremove mcpp index remove
    msdoctor mcpp self doctor miupdate mcpp index update
    msenv mcpp self env msconfig mcpp self config
    msversion mcpp self version msexplain mcpp self explain

    Q5: 可做成一个命令, 支持用户 直接 阅读跳转 上传 评阅 相关的项目

    这个等到后面有独立网站的时候会做

    Q6: 增加 优秀 mcpp 作为模板项目 提供学习阅读 ;

    mcpp 有强大的 去中心化的项目模板功能 你可以通过 mcpp new chatbot --template llmapi 创建对应项目/库的模板工程 不仅仅可用于了解学习 还能 快速获取与运行 - C++ 项目上手困难的解决方法, 可一键运行的项目模板机制

    Q7: 支持 CMake 与 mcpp 项目 互转译 , 两种 配置文件 相互的 转换

    A7: 直接用 mcpp.toml 描述一个 cmake项目本身 让AI做已经非常简单了 90% 的项目应该几分钟就可以, 未来可能会提供相关的 Agent Skill 这个 可能比维护一个cmake解析器 更合适 (现在其实直接包仓库文档目录给Agent 基本很快就能给一个 cmake项目写出对应的 mcpp.toml)

  3. self-assigned this
    on Jul 31, 2026
  4. speak-agent commented on Aug 8, 2026

    @speak-agent
    Member

    结论:作为「7 条建议合集」结掉,3 条已交付,其余 4 条各自归位。

    核验基线 main@80291ca / v2026.8.8.4,逐条落到代码:

    # 建议 状态
    1 Homebrew 分发(预编译包优先) ✅ 已交付
    2 复用本机已装的高版本 LLVM/GCC ➡️ 归 #276
    3 help 一级标题着色 ➡️ #397 D-2
    4 命令别名 ⚠️ 仅 xlings 用户可用(见下)
    5 把 #260 做成命令 ➡️ #260
    6 优秀项目作模板 ✅ 已交付
    7 CMake ↔ mcpp 互转译 ➡️ #397 D-2(走 Agent Skill,不做解析器)

    已交付的三条(逐条核过)

    1 · Homebrew — .github/workflows/homebrew-publish.yml(f4a7568);tap 仓库 mcpp-community/homebrew-mcpp 活跃,Formula/mcpp-m.rb 已跟到 version "2026.8.8.4",走预编译 release 资产,arm64 + macOS 14 门;README.md:118-128 有入口。用 mcpp-m 是因为 homebrew-core 已占用 mcpp(Matsui 预处理器),tap 内 Aliases/{mcpp,mcpp-bin} 指回来。

    brew install mcpp-community/mcpp/mcpp-m

    4 · 短命令 — xlings install mcpp-short-cmd(openxlings/xim-pkgindex#462),README 双语已记(8c5e0bd)。

    6 · 模板 — mcpp new <name> --template <t> / --list-templates,带 e2e 与文档;imgui-m 0.0.6 起带 templates/{docking,window}。

    ⚠️ 一处必须更正:第 4 条对你(Homebrew 用户)不成立

    mcpp-short-cmd 是 xim 包,靠 xvm.add() 注册 ⇒ 必须先有 xlings 命令。而 brew formula 的 def install 只写 bin/mcpp,xlings 躺在 #{libexec}/registry/bin/xlings 仅作为 MCPP_VENDORED_XLINGS 给 mcpp 内部用;install.sh 与 AUR 同样只把 $PREFIX/bin 写进 PATH,而 xlings 落在 $PREFIX/registry/bin/。四条安装通道里三条拿不到这个能力,而你恰好在其中一条上。

    (顺带:install.sh:13 的自述 $PREFIX/bin/{mcpp,xlings} 是过时的,脚本里没有任何一处把 xlings 放进 bin/。已登记。)

    第 2 条:归 #276,并且此前给的说法需要修正

    [toolchain] default = "system" 这个逃生门确实存在(src/build/prepare.cppm:1555-1558),但它在 macOS 上大概率选错编译器:没有 $CXX 时兜底到字面量 g++(src/toolchain/probe.cppm:249-254),而 macOS 上 which g++ = /usr/bin/g++ = Apple Clang;Homebrew 的 llvm 是 keg-only 且其 bin 目录里根本没有 g++ 这个名字。mcpp 默认模板用 import std,Apple CLT 给不出可用的 std 模块清单。

    而且这条路从未被验证过能构建成功 —— tests/e2e/14_toolchain_fallback.sh:39-40 自己写着「we don't verify success, only that the hard-error path doesn't fire」。

    今天真正能用的是显式指定编译器:

    CXX=/opt/homebrew/opt/llvm/bin/clang++ mcpp build

    要把「本机已装工具链」变成一等公民,缺的是「外部工具链的申报入口」—— 这与 #177 / #276 是同一个缺口,已合并到 #276。

    顺带修正一个本轮撞到的真 bug

    --no-color 在 TTY 下是空操作:src/ui.cppm:239 的 disable_color() 只改 g_color 不置 g_inited,而每个输出入口都先调 init()(:233-237),于是 g_color 又被 detect_color() 覆盖回 true。CI 全走管道所以一直没人发现(无色的结果是对的,原因是错的)。已登记 #397 C-3,一行修好 —— 做第 3 条(help 着色)之前必须先修它,否则 mcpp --help --no-color 仍会出色。

    感谢这份清单,7 条里有 3 条直接变成了发布通道和模板机制。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentationenhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions