【问题标题】:Formatting CMakeLists.txt with Clang-Format使用 Clang-Format 格式化 CMakeLists.txt
【发布时间】:2017-10-30 21:23:34
【问题描述】:

有没有办法让 clang-format 正确格式化 CMake 文件?

我有一个带有Language: CppBasedOnStyle: Google.clang-format 文件。未指定其他语言。

理想情况下,我想自定义样式,但是现在最大的问题是,clang-format 缩进很多行。文件越长,我得到的缩进级别就越多。

问题:

  1. 有没有办法让 clang 格式将 CMakeLists.txt 识别为与 Cpp 不同的语言?
  2. clang-format 是否可以让我为 CMake 语言添加规则?
  3. 在这种情况下是否存在 clang 格式的替代方案?

示例

输入

cmake_minimum_required (VERSION 3.2)
project(HELLO)

add_executable (helloDemo demo.cxx demo_b.cxx)
add_executable (goodByeDemo goodbye.cxx goodbye_b.cxx)

实际输出

cmake_minimum_required(VERSION 3.2) project(HELLO)

    add_executable(helloDemo demo.cxx demo_b.cxx)
        add_executable(goodByeDemo goodbye.cxx goodbye_b.cxx)

预期输出:与输入相同。或者命令和括号之间没有空格。

【问题讨论】:

  • 可能不会。它会将文件解析为 cpp 文件。缩进可能是因为它希望语句将用分号分隔,因此它可能会将所有内容解释为一条大长线,并缩进它以向您显示这是一个连续的语句。您可以尝试将开关 AlignAfterOpenBracket 设置为 false。我不确定这是影响缩进的那个,但你仍然会遇到 ifs 和 fors 的问题,因为它们不遵循类似 C 的语法。 clang.llvm.org/docs/ClangFormatStyleOptions.html
  • 因此,clang-format v. 8.0.1 将对 CMakeLists.txt 文件进行处理。它看起来有点聪明,因为它会接受评论并删除 # 之后的空格。有什么方法可以控制这些文件的处理方式吗?

标签: cmake clang-format cmake-format


【解决方案1】:
  1. 一个相关问题:Is there any utility that can reformat a cmake file

  2. Clang 格式无法做到这一点,但现在存在替代方案:https://github.com/cheshirekow/cmake_format

示例 -- 错误输入:

cmake_minimum_required(VERSION 3.2) project(HELLO)

    add_executable(helloDemo demo.cxx demo_b.cxx)
        add_executable(goodByeDemo goodbye.cxx goodbye_b.cxx)

命令:

pip install --user cmake_format  # Or sudo to install system-wide
cmake-format -i CMakeLists.txt

结果输出:

cmake_minimum_required(VERSION 3.2)
project(HELLO)

add_executable(helloDemo demo.cxx demo_b.cxx)
add_executable(goodByeDemo goodbye.cxx goodbye_b.cxx)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    相关资源
    最近更新 更多