【问题标题】:How to use clang-format from macports?如何使用 macports 的 clang 格式?
【发布时间】:2016-12-28 09:57:52
【问题描述】:

我想使用clang-format,但在我的系统中找不到它。我从 macports 安装了 llvm。安装/启用的方法是什么?

【问题讨论】:

    标签: clang macports clang-format


    【解决方案1】:

    先用 MacPorts 用命令安装 clang-3.9

    sudo port install clang-3.9
    

    之后,您会在 /opt/local/bin 中找到 clang-format-mp-3.9,它应该已经在您的 PATH 中,因此您可以直接使用它。

    如果你想让clang等相关工具都指向你刚刚安装的版本,可以使用MacPorts的select机制。

    您可以使用port select --list for clang 查看所有可用选项。

    $ port select --list clang
    Available versions for clang:
        mp-clang-3.8
        mp-clang-3.9
        none (active)
    

    使用sudo port select --set clang <version>,您可以选择其中一个作为新的默认值,这将在/opt/local/bin 中创建不带版本后缀的符号链接。

    $ sudo port select --set clang mp-clang-3.9
    Selecting 'mp-clang-3.9' for 'clang' succeeded. 'mp-clang-3.9' is now active.
    

    您可以通过查看工具的版本来确认此更改:

    $ clang-format --version
    clang-format version 3.9.0 (tags/RELEASE_390/final)
    

    如果您以后希望删除这些符号链接以避免隐藏 Xcode 安装的工具,只需选择 none 版本。

    【讨论】:

      【解决方案2】:

      你需要安装 clang 来获取 clang 工具(而 llvm 是 clang 的一个依赖,所以你已经成功了一半)。要通过 macports 获取截至本文的最新稳定版本,请使用

      sudo port install clang-3.9

      现在对我来说,clang-format 安装在/opt/local/libexec/llmv-3.9/bin 中。在这里您还可以找到所有其他的 clang 工具,例如 clang-tidy。

      为简单起见,我在我的 bash 配置文件中创建了一个别名,因为我不喜欢 Apple 的 fmt 命令:alias fmt ='/opt/local/libexec/llmv-3.9/bin/clang-format'。因此fmt -i file.c 现在使用我在.clang-format 文件中选择的样式运行clang-format inplace(覆盖文件)。

      作为额外的奖励,这是一个很棒的工具,可以帮助测试所有 clang 格式选项的功能:http://zed0.co.uk/clang-format-configurator/

      【讨论】:

      • 谢谢!我有你提到的目录,但那里没有 clang-tidy 或 clang-format。
      • @gruszczy 如果你运行port contents clang-3.9,返回的一堆东西是什么?此外,您移植安装了哪个版本的 llvm?如果您有 llvm-3.9,则使用该命令,如果您有 llvm-$(version),则使用 port contents clang-$(version)。如果您安装了东西,请告诉我 port contents clang-3.9 | grep "/opt/local/libexec/llvm-3.9/bin" 返回的内容。如果第一个命令返回结果,但第二个命令没有返回结果,那么由于某种原因,clang 工具没有安装在我认为它们应该在的位置。
      • find /opt/local -name "clang-format" 如果没有返回任何内容,您可能无法使用 macports 构建 clang。另一种可能性是您自定义安装了 macports 并更改了默认路径,以便不在 /opt/local 中完成安装。
      • @gruszczy 另外,我应该提到你会从你的 llvm 安装中获得/opt/local/libexec/llmv-3.9/bin这并不意味着您拥有或应该拥有clang工具。当您安装clang时,它也会使用相同的目录。
      • 最后,我有时间回到这个。非常感谢,这行得通。
      【解决方案3】:

      clang的最新版本是8.0:

      $ sudo port install clang-8.0
      $ clang
      clang                            clang-check-mp-7.0               clang-format-mp-8.0              clang-offload-bundler-mp-7.0     clang-reorder-fields-mp-7.0
      clang++                          clang-check-mp-8.0               clang-func-mapping-mp-7.0        clang-offload-bundler-mp-8.0     clang-reorder-fields-mp-8.0
      clang++-mp-7.0                   clang-cl-mp-7.0                  clang-import-test-mp-7.0         clang-query-mp-7.0               clang-tidy-mp-7.0
      clang++-mp-8.0                   clang-cl-mp-8.0                  clang-import-test-mp-8.0         clang-query-mp-8.0               clang-tidy-mp-8.0
      clang-apply-replacements-mp-7.0  clang-cpp-mp-7.0                 clang-include-fixer-mp-7.0       clang-refactor-mp-7.0            clangd-mp-7.0
      clang-apply-replacements-mp-8.0  clang-cpp-mp-8.0                 clang-include-fixer-mp-8.0       clang-refactor-mp-8.0            clangd-mp-8.0
      clang-change-namespace-mp-7.0    clang-extdef-mapping-mp-8.0      clang-mp-7.0                     clang-rename-mp-7.0              clangd-xpc-test-client-mp-8.0
      clang-change-namespace-mp-8.0    clang-format-mp-7.0              clang-mp-8.0                     clang-rename-mp-8.0
      

      所以 /opt/local/bin/ 的 clang-format-mp-8.0 就是一个。

      【讨论】:

        猜你喜欢
        • 2012-05-09
        • 1970-01-01
        • 2012-03-01
        • 1970-01-01
        • 2014-05-19
        • 1970-01-01
        • 2020-04-28
        • 1970-01-01
        • 2017-10-30
        相关资源
        最近更新 更多