首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在BUILD.bazel文件中获取当前日期

如何在BUILD.bazel文件中获取当前日期
EN

Stack Overflow用户
提问于 2022-11-28 13:54:31
回答 1查看 42关注 0票数 0

我是bazel的新手,在用bazel构建我的CPP代码时,我面临着下面的问题。

我希望将当前日期传递为以下格式的本地定义之一。

日期=<获取当前日期的规则>

cc_lib( .,local_define = "xyz = 28-11-2022",)

每次运行bazel构建时,我如何获得当前的日期?local_define = "xyz = date",

我试着加载python日期,但starlark不支持它。

EN

回答 1

Stack Overflow用户

发布于 2022-11-28 21:45:25

bazel在构建中处理非确定性信息的通常方法是使用"build标记“,在这里描述:

https://bazel.build/docs/user-manual#workspace-status

Bazel竭尽全力避免不确定性,因为它不利于缓存,因此向构建中添加类似当前时间的内容是不直接的。使用生成冲压有时需要更改程序或基于status.txt文件生成文件并将这些文件合并到您的构建中。如果确实需要定义,您可以这样做:

BUILD

代码语言:javascript
复制
cc_binary(
  name = "main",
  srcs = ["main.c"],
  local_defines = ["DATE=\"$(DATE)\""],
)

main.c

代码语言:javascript
复制
#include <stdio.h>

#ifndef DATE
#define DATE "none"
#endif

int main() {
  printf("date is %s\n", DATE);
  return 0;
}
代码语言:javascript
复制
$ bazel build main --define DATE="\\\"$(date)\\\""
INFO: Analyzed target //:main (37 packages loaded, 163 targets configured).
INFO: Found 1 target...
Target //:main up-to-date:
  bazel-bin/main
INFO: Elapsed time: 0.497s, Critical Path: 0.08s
INFO: 6 processes: 4 internal, 2 linux-sandbox.
INFO: Build completed successfully, 6 total actions

$ bazel-bin/main
date is Mon Nov 28 04:33:30 PM EST 2022

(为了允许日期中的空格,所有转义都是必需的,但您可能不需要所有这些。)

请注意,--define DATE="\\\"$(date)\\\""必须在命令行中提供,并且不能放入.bazelrc中,因为.bazelrc的计算不像shell。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74601650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档