Bazel将外部依赖项的位置作为py_二进制文件的命令行arg获取

Bazel将外部依赖项的位置作为py_二进制文件的命令行arg获取,bazel,bazel-rules,Bazel,Bazel Rules,我需要外部(或内部)依赖项的路径,以便将其作为参数传递给内部函数。我们需要文件夹的位置,而不是特定的文件。此外,有时,我们需要共享库所在文件夹的路径,由cc\u library生成 Python文件 import cppyy cppyy.add_include_path('path/to/external/dependency/1') cppyy.add_library_path('path/to/another/external/dependency/2') cppyy.add_include

我需要外部(或内部)依赖项的路径,以便将其作为参数传递给内部函数。我们需要文件夹的位置,而不是特定的文件。此外,有时,我们需要共享库所在文件夹的路径,由
cc\u library
生成

Python文件

import cppyy
cppyy.add_include_path('path/to/external/dependency/1')
cppyy.add_library_path('path/to/another/external/dependency/2')
cppyy.add_include_path('path/to/another/internal/dependency')
cppyy.include('file/in/external/dependency')
生成文件

py_binary(
    name = "sample",
    srcs = ["sample.py"],
    deps = [
        "@cppyy_archive//:cppyy",
    ],
    data = [
        "@external-dependency//location:target",
        "//internal-dependency/location:target2"
    ]
)
发件人:

您可以通过运行以下命令查看外部目录:

ls $(bazel info output_base)/external
external
中路径的实际外观取决于存档所使用的规则。 例如,如果使用
工作区
文件中的
http\u文件
声明:

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file")
http_file(
    name = "fenix",
    urls = ["https://github.com/mozilla-mobile/fenix/archive/v76.0.0-beta.2.tar.gz"],
    sha256 = "94050c664e5ec5b66cd2ca9f6a8b898987ab63d9602090533217df1a3f2dc5a9"
)
您将发现
v76.0.0-beta.2.tar.gz
文件为
external/fenix/file/download

user@host:~$ file $(bazel info output_base)/external/fenix/file/downloaded                 
/home/user/.cache/bazel/_bazel_user/761044447e04744e746cd54d0b4b5056/external/fenix/file/downloaded: gzip compressed data, from Unix, original size modulo 2^32 15759360