我有一个C++程序可以打印VERSION
字符串的值:
#include <iostream>
int main() {
std::cout << "Version: " << VERSION << std::endl;
return 0;
}
我想在构建时更改VERSION
的值(一个字符串)。这是我的Bazel配置,包含VERSION
的默认值local_defines
:
cc_binary(
name = "main",
srcs = ["main.cpp"],
local_defines = ["VERSION=\\\"alpha\\\""],
)
当我这样调用它时,它仍然打印alpha
,而不是我为VERSION
传递的新值。
bazel run --define VERSION=beta main
INFO: Analyzed target //:main (1 packages loaded, 2 targets configured).
INFO: Found 1 target...
Target //:main up-to-date:
bazel-bin/main
INFO: Elapsed time: 0.965s, Critical Path: 0.80s
INFO: 4 processes: 2 internal, 2 darwin-sandbox.
INFO: Build completed successfully, 4 total actions
INFO: Build completed successfully, 4 total actions
Version: alpha
为什么这行不通?
2条答案
按热度按时间wgx48brx1#
cc_binary.local_defines
和--define
标志是独立的,即使它们共享相同的名称。local_defines
支持"Make" variable substitution,这意味着这将起作用:local_defines = ["VERSION=\\\"$(VERSION)\\\""]
.rsaldnfx2#
也许
--workspace_status_command
是你的一个选择。一个例子可以在here中找到。