跳过正文
Background Image
  1. Posts/

asdf-clang-tools:使用 asdf 安装 Clang 工具的新选择

·1234 字·3 分钟· ·
沈显鹏
作者
沈显鹏
目录

最近,我在 cpp-linter 组织下发布了一个名为 asdf-clang-tools 的全新仓库。这个项目是从 amrox/asdf-clang-tools fork 而来。由于原作者多年没有维护,我对其进行了修复、升级和功能扩展,使其焕然一新。简单来说,asdf-clang-tools 是一个 asdf 插件,用于安装和管理 Clang Tools 相关工具(如 clang-format、clang-tidy、clang-query 和 clang-apply-replacements 等)。

新的安装方式:除了 pip 还有 asdf
#

在此之前,我曾推出过 clang-tools-pip 工具包,用户可以通过 pip install clang-tools 的方式安装包括 clang-format、clang-tidy、clang-query、clang-apply-replacements 在内的一整套 Clang 可执行工具。

而 asdf-clang-tools 则提供了另一种途径——利用 asdf 版本管理器来安装这些工具。简而言之,这为喜欢用 asdf 管理工具版本的开发者多了一个选择。

这两种方式并不是互斥的:你可以通过 pip 或 asdf 轻松安装和管理 Clang 工具。至于选择哪种方式取决于你的工作流和个人喜好。

什么是 asdf 版本管理器
#

很多开发者可能还不太熟悉 asdf。asdf 是一个多语言、多工具的版本管理器。

它可以用一个命令行工具管理多种运行时环境的版本,支持插件机制。

举例来说,你可以通过 asdf 来管理 Python、Node.js、Ruby 等语言的版本,也可以管理 Clang 工具(像我介绍的 asdf-clang-tools)。

所有工具的版本信息都记录在一个共享的 .tool-versions 文件中,这样团队可以轻松在不同机器间同步配置。

总之,asdf 的好处就是“一个工具管理所有的依赖”,让项目所需的各类工具版本统一起来,免去在每个工具里使用不同版本管理器的麻烦。

安装与使用示例
#

使用 asdf-clang-tools 安装 Clang 工具非常简单。假设你已经安装好了 asdf,只需按照官方仓库的说明进行操作:

  • 首先 添加插件:以 clang-format 为例,在终端运行:

    asdf plugin add clang-format https://github.com/cpp-linter/asdf-clang-tools.git
    

    类似地,clang-queryclang-tidyclang-apply-replacements 等工具也使用相同的仓库地址,只需把插件名改为对应的名称即可。

  • 查看可用版本:添加插件后,可以运行 asdf list all clang-format 来列出所有可安装的 clang-format 版本。

  • 安装工具:选择一个版本(例如最新的 latest),执行:

    asdf install clang-format latest
    

    这会下载并安装指定版本的 clang-format 二进制文件。

  • 设置全局版本:安装完成后,可以执行:

    asdf set clang-format latest
    

    这会把版本写入 ~/.tool-versions 文件,实现全局可用。此后,你就可以直接在命令行中使用 clang-format 等命令了。

以上操作完成后,clang-format、clang-tidy 等工具就已集成到 asdf 管理下。更多细节可参考 asdf 官方文档。

欢迎试用并反馈建议
#

总的来说,asdf-clang-tools 为需要 Clang Tools 的开发者提供了一种新的安装方式。

它与 cpp-linter 组织的其它工具(如 clang-tools-pip)互为补充。

我诚挚欢迎大家尝试 cpp-linter 提供的整个 C/C++ lint 解决方案,选择最适合自己工作流的工具。

同时,如果在使用过程中有任何问题或改进建议,欢迎通过 GitHub Issues、讨论区等渠道提出,一起完善 Cpp Linter 工具链,让 C/C++ 格式化和静态分析工作更加便捷高效!


转载本站文章请注明作者和出处,请勿用于任何商业用途。欢迎关注公众号「DevOps攻城狮」

相关文章

ChatGPT 一开,谁还去“努力”?
·784 字·2 分钟
AI 的出现让很多人感到“虚”,但它不会取代我们的职位,而是改变我们的做事方式。本文分享了对 AI 的体会和每天一小步的坚持。
还在用 Wiki/Confluence?你可能在生产垃圾
·1041 字·3 分钟
在企业中,Wiki 和 Confluence 等文档工具如果缺乏统一管理和审核机制,可能会导致信息混乱和知识沉淀失败。本文探讨了如何避免这种情况,并借鉴开源社区的成功经验。
还在用 pip 和 venv?那你可真落伍了,赶紧体验 uv!
·1077 字·3 分钟
uv 是一个由 Astral 团队开发的 Python 包管理工具,它能替代 pip、venv、pip-tools 的功能,提供更快的依赖解析速度和更现代的项目管理方式。
全程记录|PyCon LT 2025 第三天:AI 能取代你吗?
·1468 字·3 分钟
今天是 PyCon LT 2025 的最后一天,主题是 AI and ML Day。分享了几位女性讲者的精彩演讲,以及对数据科学和 AI 的新认识。
全程记录|PyCon LT 2025 第二天:被几位女性开发者圈粉了
·1570 字·4 分钟
今天是 PyCon LT 2025 的 Data Day,主题是 Dataframes、Databases、Orchestration。虽然不太熟悉这些领域,但几位女性讲者的演讲让我印象深刻,收获颇丰。
全程记录|PyCon LT 2025 第一天:我在异国 Python 大会上的见闻
·1826 字·4 分钟
参加了 PyCon LT 2025 的第一天,分享了演讲内容、个人感受以及对 Python 社区的思考。