【发布时间】:2018-04-17 10:17:02
【问题描述】:
我正在尝试使用 Bazel 构建一个 C++ 应用程序,它在运行时需要许多文件。我使用构建规则的data 属性将这些文件包含在构建目标中:
cc_binary(
name = "myapp",
srcs = [
"main.cpp",
],
data = glob([ "media/**" ], exclude = [ "media/BUILD", "media/.keep" ]),
)
问题在于 Bazel 将运行文件放在一个奇怪的路径下,即 build-system-dependant 目录 (<build target name>.runfiles/__main__/<build target name>/)。
除了像这样对这些路径进行硬编码之外,还有什么健全的(或灵活的,如果你愿意的话)引用运行文件的方法
// "myapp" is the build target name
FILE* f = fopen("myapp/myapp.runfiles/__main__/myapp/media/file.txt", "r");
或从清单中读取路径(这仍然不是更好的选择,因为每个文件都以 __main__/<build target name>/ 为前缀)?
【问题讨论】:
标签: c++ build bazel build-system