CMake 源代码中大小写一致性的工具

2024-01-20

CMake 命令在小写、大写和混合大小写下均有效。然而,将所有这些内容混合在一个文件中会降低 CMake 代码的可读性。

有没有一种工具可以自动纠正这种风格不一致的情况?


steveire 的答案链接到正确的资源,但让我明确解释一下,以防这些链接消失。

CMake 命令不区分大小写,但根据 CMake 开发人员 Brad King 在 2012 年的说法,建议使用小写字母:

古老的 CMake 版本需要大写命令。稍后的命令 名称变得不区分大小写。现在首选的样式是小写。

允许转换我的项目的 shell 代码CMakeLists.txt文件转换为小写的灵感来自 steveire 答案链接背后的代码:

cmake --help-command-list \
    | while read c; do
        echo 's/\([^a-zA-Z_]\|^\)'"$c"'\(\s*\)(/\1'"$c"'\2(/gI'
    done > convert.sed
git ls-files -z -- '*CMakeLists.txt' | xargs -0 sed -i -f convert.sed

它有以下改进:

  • grep -v "cmake version"不再需要了,因为似乎--help-command-list输出不再包含该内容
  • 原始正则表达式包含\b这使得它与 GNU sed 4.2.2 不匹配
  • 相反,cmake 命令前面必须有非字母/下划线或行开头
  • 不要将 cmake 命令转换为全部大写,而是使正则表达式不区分大小写。这还将查找并转换混合大小写的出现,例如Find_Package.
  • 没有特定于 cmake 代码库的部分。修改以适合您的。这个简单的构造对我来说已经足够了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CMake 源代码中大小写一致性的工具 的相关文章

  • 如何让 gcc/clang 警告 switch 语句中缺少中断

    有什么办法可以使gcc or clang警告 switch 语句中缺少中断 具体来说 我几乎总是希望 case 语句以中断结束 如果我不这样做的话 如果我能让编译器抱怨 那就太好了 如果它会寻找一个break语句或一个 fall throu
  • grpc找不到protobuf库

    我检查了 grpc 安装并完成了构建和安装 现在当我尝试 find package gRPC CONFIG REQUIRED I get CMake Error at CMakeLists txt 15 find package Found
  • x 或 y:可接受的习语,还是混淆?

    我必须从可能为 None 的变量中提取值 并考虑一些默认值 我首先写了这段代码 if self maxTiles is None maxX maxY 2 2 else maxX maxY self maxTiles 然后我意识到我可以将其缩
  • CXX 编译器标识未知

    我们在使用 Visual Studio 2012 在 Windows 7 64 位下使用 CMake v2 8 12 编译项目时遇到问题 CMake 给我们提供了以下错误 我们已经尝试使用管理员权限从 Visual Studio 命令行启动
  • 如何在cmake中添加cuda源代码的定义

    我使用的是 Visual Studio 2013 Windows 10 CMake 3 5 1 一切都可以使用标准 C 正确编译 例如 CMakeLists txt project Test add definitions D WINDOW
  • Cmake 链接到共享库找不到​​库

    在 Ubuntu 上 我有两个目录 build and src In src my CMakeLists txt文件有以下几行 add executable Test main cpp target link libraries Test
  • cmake 找不到 boost 库,因为它查找错误的文件名

    我根据文档在 Windows 8 1 机器上构建了 boost 1 56 库 作为共享库和静态库 他们全部出现在BOOST ROOT stage lib目录 文件名格式如下 boost thread vc120 mt 1 56 dll bo
  • Checkstyle 规则防止调用某些方法和构造函数

    是否可以使用 Checkstyle 来禁止使用某些使用系统相关默认值 区域设置 字符集等 的构造函数或方法 我更喜欢强制执行一项政策 程序员应该明确了解系统相关的值 所以我认为以下物品是危险的 all the constructors of
  • 如何让 CMake 为目标安装 PDB 文件

    如何让 CMake 安装调试 Visual Studio 生成的 DLL 文件和 EXE 文件所需的配套 PDB 文件 我已经挣扎了一段时间 试图找到这个问题的一个好的答案 我现在认为我找到了一个 使用安装文件命令
  • “if”在 ASP.NET MVC View (.aspx) 文件中被认为有害?

    我记得看到一个博客 或其他内容 说你不应该在 ASP NET MVC 的 aspx 文件中使用 但我不记得它说的替代方案是什么 有人记得看过这个并指出我吗 基本上 这意味着您的视图中不应该有大量的 if 语句 您的控制器和视图模型应该能够处
  • wasm-ld:错误:初始内存太小,需要 18317952 字节

    我想将 ffmpeg 编译为 wasm 下载 FFMPEG 和 emsdk 源代码后 我使用下面的命令进行构建 emconfigure configure cc emcc enable cross compile target os non
  • 为什么在 C++ 类中的数据成员上使用像 m_ 这样的前缀?

    许多 C 代码使用语法约定来标记数据成员 常见的例子包括 m memberName对于公共成员 在所有使用公共成员的情况下 memberName对于私人会员或所有会员 其他人尝试强制使用this gt member每当使用数据成员时 根据我
  • cmake 不会在更改时重建 externalProject

    我有以下 CMakeLists txt cmake minimum required VERSION 3 0 project addProject include ExternalProject set ExternalProjectCMa
  • 在 Android Studio 中使用预构建的共享库

    我需要在我的 android 项目中使用自定义的预构建共享库 在独立 ndk 上构建为 libdynamic so 我在路径 src main 中创建了一个文件夹 jniLibs 然后在其中创建了 4 个文件夹 即 armeabi arme
  • (如何)我可以抑制未找到包配置文件的警告吗?

    我正在尝试创建一个CMakeLists txt尝试查找的文件Qt5 如果失败 则尝试回退到Qt4安装 该脚本到目前为止有效 但如果出现以下情况我总会收到警告Qt5未安装 注意FindQt5 cmake是由提供Qt5并且仅当以下情况时才可用Q
  • 为了清楚起见,是否应该在返回类型上使用无用的类型限定符?

    当我们的头文件中有原型时 我们的静态分析工具会抱怨 返回类型上有无用的类型限定符 例如 const int foo 我们这样定义它是因为该函数返回一个永远不会改变的常量 认为 API 看起来更清晰const到位 为了清楚起见 我觉得这类似于
  • 找不到 assimp-vc140-mt.dll ASSIMP

    我已经从以下位置下载了 Assimp 项目http assimp sourceforge net main downloads html http assimp sourceforge net main downloads html Ass
  • 有关 paddingStart 使用的冲突 lint 消息

    API 17 RTL 支持发布后 我将以下内容添加到我的清单中 android supportsRtl true 这导致 Lint 在我的视图中有 paddingLeft Right 的地方正确地向我发出这些警告 考虑添加 android
  • MinGW Make 抛出“系统找不到指定的路径。”错误

    我正在尝试在 Windows 7 上使用 cmake 生成一个 c 项目 在实际创建项目之前 cmake 会对您的工具链进行快速测试 我正在使用 MinGW 这就是我的问题所在 Cmake 触发 make 构建 最终失败并返回 系统找不到指
  • Objective-C 中是否有命名初始化方法的约定?

    在可以通过不同的 init 方法初始化的 Objective C 类中 将所有初始化程序共用的初始化代码收集到一个从其他 init 方法 有时也从从 Nib 唤醒 是否有关于如何命名该方法的约定 初始化器 初始化公共 根据 Apple 的说

随机推荐

  • iOS 音频单元 - 创建立体声正弦波

    周末我在学习如何在 iOS 上进行音频合成编程时遇到了障碍 我在 iOS 上进行开发已经好几年了 但我刚刚进入音频合成方面 现在 我只是编写演示应用程序来帮助我学习这些概念 我目前已经能够在音频单元的播放渲染器中构建和堆叠正弦波 没有任何问
  • LOCAL_LDLIBS 与 LOCAL_LDFLAGS

    Android NDK 指南解释了以下两个变量Adnroid mk如下 LOCAL LDLIBS 构建共享库或可执行文件时要使用的附加链接器标志列表 LOCAL LDFLAGS 构建共享库或可执行文件时要使用的其他链接器标志的列表 那么这两
  • 电子邮件地址中可以有撇号吗? [复制]

    这个问题在这里已经有答案了 可能的重复 电子邮件地址中允许使用哪些字符 https stackoverflow com questions 2049502 what characters are allowed in email addre
  • “弧形移植”和“弧形修补”有什么区别?

    arc help full less揭示了这一点graft graft revision Grafts revision and its dependencies if any onto your working tree force Do
  • 从 Python 字典中删除 None 值

    Python 新手 所以这可能看起来很愚蠢 我有两个命令 default a alpha b beta g Gamma user a NewAlpha b None 我需要使用用户中存在的值更新我的默认值 但仅适用于那些值不等于 None
  • 如何转义 YAML 字符串中的冒号和其他特殊字符?

    我有以下 YAML 片段 description API for bean consuming applications Examples painted pony lima bean 招摇编辑器 http editor swagger i
  • 函数调用的正则表达式?

    我只想从函数调用中提取一些引用的文本 并且想知道是否可以获得有关正则表达式的帮助 该字符串看起来像这样 MyFunction MyStringArg 本质上 我想扫描文件中任何调用 MyFunction 的行 然后捕获引号内的字符串文字 后
  • 使用正则表达式验证数学表达式?

    我想使用正则表达式验证数学表达式 数学表达式可以是这样的 可以为空 表示没有输入任何内容 如果指定 它将始终以运算符开头 or or or 并且后面总是跟着一个可以有的数字 任意位数且数字可以是小数 包含 数字之间 或整数 数字中没有 符号
  • 使用 if 语句检查 mousedown 是否有效?

    是否可以做这样的事情 if this mousedown true 我以为这会起作用 但事实并非如此 额外细节 我试图检查当鼠标离开特定位置时鼠标按钮是否按下DIV 因此如果用户在鼠标离开 div 时按住鼠标按钮 则执行此操作 否则执行此操
  • EditText 不接受数字输入

    我的 Android 应用程序中有一个 EditText 视图 我的 EditText 不采用整数值作为输入 但它采用所有其他值 以下是我的 EditText 视图
  • 对齐子图中的 ylabel

    我有几个子图 一个在另一个下 每个子图的 y 轴都标有不同的值 比如第一个是 1 5 第二个是 10 1000 等 所以结果是每个 ylabel 都会有不同的对齐方式 有没有办法来解决这个问题 例如 将所有 ylabel 向左对齐 或者还有
  • 为什么 eval 是邪恶的?

    我知道Lisp和Scheme程序员通常会这么说eval除非绝对必要 否则应避免 我已经看到了对几种编程语言的相同建议 但我还没有看到反对使用的明确论据列表eval 在哪里可以找到使用潜在问题的说明eval 例如 我知道以下问题GOTO在过程
  • 卷曲:连接被拒绝

    运行curl时出现以下错误 curl 7 连接127 0 0 1端口8080失败 连接 拒绝了 看起来很容易调试 但是 我没有找到如何解决它 文件中提到了地址127 0 0 1etc hosts 我在Ubuntu系统上使用curl版本7 4
  • 如何从 Sinch 应用仪表板删除上传的 APNS 证书?

    我们正在开发呼叫应用程序使用新奇SDK 我想从 Sinch Dashboard 中创建的应用程序中删除上传的 APNS 证书 我没有找到任何方法来从中删除现有的上传证书 NOTE 现在sinch在App上传的认证附近提供了 删除 选项 No
  • 如何使用java脚本向“go服务器”(go语言)发送json请求并接收json响应

    如何使用java脚本发布json请求并从 go服务器 go语言 接收json响应 我试过这个 JavaScript 代码 var calculate operand1 null operand2 null operator null fun
  • 内核中的地址

    当我在内核中找到地址时 我有一个问题 我在内核中插入一个 hello 模块 在这个模块中 我放置了这些东西 char mystring this is my address printk lt 1 gt The address of mys
  • Momentjs:如何将一个时区的日期/时间转换为 UTC 日期/时间

    我有一个带有时区的日期 时间 并且想将其转换为 UTC const date 2019 04 10T20 30 00Z const zone Asia Kuala Lumpur const utcDate moment date tz zo
  • 在 MATLAB 中拆分数组

    我有一个整数数组 我想在 0 出现的地方分割这个数组 并有一个函数给我分割点 示例 数组 0 0 0 1 2 4 5 6 6 0 0 0 0 0 22 4 5 6 6 0 0 0 4 4 0 该函数必须返回这些数字 3 10 14 20 2
  • 通过求和来聚合重复行

    根据我的问题 1 识别一组变量是否唯一标识数据的每一行 https stackoverflow com q 22834725 1414455 2 根据给定的变量集标记所有重复的行 https stackoverflow com q 2289
  • CMake 源代码中大小写一致性的工具

    CMake 命令在小写 大写和混合大小写下均有效 然而 将所有这些内容混合在一个文件中会降低 CMake 代码的可读性 有没有一种工具可以自动纠正这种风格不一致的情况 steveire 的答案链接到正确的资源 但让我明确解释一下 以防这些链