Я хочу создать правило bazel gen для создания файла заголовка, содержащего текущий хэш фиксации git:
# Generate "version_info.h"
cc_library(
name = "version_info",
srcs = [],
hdrs = ["version_info.h"],
visibility = ["//visibility:private"],
)
VERSION_INFO_H_BASH = """
#ifndef VERSION_INFO_H_
#define VERSION_INFO_H_
#define COMMIT_HASH "%s"
#endif // VERSION_INFO_H_
"""
VERSION_INFO_H_PS = """
#ifndef VERSION_INFO_H_
#define VERSION_INFO_H_
#define COMMIT_HASH "{0}"
#endif // VERSION_INFO_H_
"""
genrule(
name = "generate_version_info",
outs = ["version_info.h"],
cmd_ps = ("cd what_comes_here; @'%s'@ -f \"$$(git.exe rev-parse HEAD)\" | Out-File $(OUTS)" % VERSION_INFO_H_PS),
cmd = ("cd what_comes_here"; printf '%s' \"$$(git rev-parse HEAD)\ > $(OUTS)" % VERSION_INFO_H_BASH),
visibility = ["//visibility:private"],
)
До сих пор я не тестировал версию для Linux (cmd), а только для Windows (cmd_ps), и она работает, но проблема в том, что при выполнении powershell она не находится в каталоге рабочей области (это мой корень git). Что мне нужно заменить what_comes_here
на первый компакт-диск в корне моей рабочей области?
HEAD
. Возможно, у вас есть какие-то дополнительные элементы сборки, которые помогают гарантировать это? - person torek   schedule 23.04.2021