C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 如何将漂亮的印刷作为构建在bazel中的一部分进行整合大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
现在,我有一个非常愚蠢的漂亮的打印脚本,它有点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,**@R_502_1595@):
  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"],**@R_502_1595@
  )

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

大佬总结

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

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。