c – 如何将漂亮的印刷作为构建在bazel中的一部分进行整合

c – 如何将漂亮的印刷作为构建在bazel中的一部分进行整合,第1张

概述现在,我有一个非常愚蠢的漂亮的打印脚本,它有点git-fu来查找格式化(无条件)然后通过clang-format -i运行它们.这种方法有几个缺点: >某些文件非常庞大,需要永久印刷. >无论基础文件是否实际发生变化,始终都会进行漂亮的打印. 在过去,我能够用CMake做一些具有几个不错的属性的东西,我想在bazel中重现: >只有在经过linting /漂亮打印等之后才构建代码. >只有lint 现在,我有一个非常愚蠢的漂亮的打印脚本,它有点git-fu来查找格式化(无条件)然后通过clang-format -i运行它们.这种方法有几个缺点:

>某些文件非常庞大,需要永久印刷.
>无论基础文件是否实际发生变化,始终都会进行漂亮的打印.

在过去,我能够用CMake做一些具有几个不错的属性的东西,我想在bazel中重现:

>只有在经过linting /漂亮打印等之后才构建代码.
>只有lint /漂亮的打印/等等已经改变的东西
>漂亮的印刷品,无论它是否在VC下

在CMake-land中,我使用了这个策略,受SCons代理目标技巧的启发:

>引入虚拟目标(例如source – > source.formatted).与此目标关联的 *** 作有两个作用:a)运行clang-format -i source,b)输出/触摸名为source.formatted的文件(这保证了对于合理的文件系统,如果source.formatted比源更新,则源不需要重新格式化)
>添加一个虚拟目标(target_name.aggregated_formatted),它聚合与特定库/可执行目标源相对应的所有.formatted文件
>使库/可执行目标依赖于target_name.aggregated_formatted作为预构建步骤

任何帮助将不胜感激.

解决方法 您可能可以使用方面.如果确实有可能,Bazel-dev可能会指出这一点.

如果您熟悉规则和 *** 作等,快速而肮脏的方式(类似于CMake Hackery)就是编写一个宏.对于例如cc_library你会这样做:

def clean_cc_library(name,srcs,**kwargs):  lint_sources(      name = "%s_linted" % name,srcs = srcs,)  pretty_print_sources(      name = "%s_pretty" % name,srcs = ["%s_linted"],)  return native.cc_library(    name = name,srcs = ["%s_pretty"],**kwargs  )

那么你当然需要用clean_cc_library替换每个cc_library. lint_sources和pretty_print_sources是你必须自己实现的规则,需要生成清理文件列表.

总结

以上是内存溢出为你收集整理的c – 如何将漂亮的印刷作为构建在bazel中的一部分进行整合全部内容,希望文章能够帮你解决c – 如何将漂亮的印刷作为构建在bazel中的一部分进行整合所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1217735.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存