请告诉我在Bazel中拥有多平台WORKSPACE的更好方法

细雨

这是我实际的WORKSPACE中的一个示例,无论我在Windows还是Linux上进行测试,都可以使我的项目看到TUT(模板单元测试)。

new_local_repository(
    name = "win32_tut",
    path = "/d/diego/progs/c++/lib/tut/",
    build_file_content = """
cc_library(
    name = "tut",
    srcs = glob([
        "tut/*.hpp",
    ]),
    hdrs = glob([
        "*.h",
    ]),
    visibility = ["//visibility:public"],
)
""",
)

new_local_repository(
    name = "linux_tut",
    path = "/usr/include/",
    build_file_content = """
cc_library(
    name = "tut",
    srcs = glob([
        "tut/*.hpp",
    ]),
    hdrs = glob([
        "tut.h",
    ]),
    visibility = ["//visibility:public"],
)
""",
)

new_local_repository(
    name = "tut",
    path = ".",
    build_file_content = """
cc_library(
    name = "tut",
    deps = select({
        "@bazel_tools//src/conditions:windows": ["@win32_tut//:tut"],
        "//conditions:default": ["@linux_tut//:tut"],
    }),
    visibility = ["//visibility:public"],
)
""",
)

我所有的cc_test规则都成功取决于"@tut//:tut"这对我有用,但是似乎我在滥用WORKSPACE文件。有没有更好的方法来实现这一目标?

您的解决方案对我来说很好。

看来我在滥用WORKSPACE文件

或者,创建一个自定义存储库规则,规则可检测OS [1],创建指向d:/diego/progs/c++/lib/tut/usr/include目录的符号链接,并创建仅包含一个cc_library的BUILD文件,从而将所有文件链接到该符号链接下。

请参阅自定义存储库示例


[1]例如 repository_ctx.os.name.lower().startswith("windows")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

编译器告诉我当我已经拥有了时执行compareTo()方法

如果有人有解决这种情况的方法,请告诉我

请告诉我何时在Java中使用getInstance()方法。

pytest --cov 告诉我我没有导入我拥有的东西

嗨,我对此有疑问,请告诉我我哪里出错了

有没有告诉我的程序退出的方法?

请告诉我为什么我的输出中有一个“none”

pygame跳跃系统出现问题。请告诉我我的代码有什么问题

请告诉我我的代码有什么问题吗?

这是我的连接字符串,请告诉我有什么问题

Flutter:这个概念叫什么名字?请告诉我要寻找什么才能更好地理解

如果表为空,请告诉我没有条目

请告诉我scrapy启动代码有什么问题

无法在对角分割的 html 页面中显示图像。请检查代码并告诉我问题

请告诉我所附图像中描述的这种视图的名称

请告诉我,为什么滚动视图在android studio中不起作用?

请告诉我如何在JS中重复此过程?

请告诉我Range Mex查询的高效算法

请告诉我这个 UI 名称是如何命名的

请谁能告诉我为什么输出是这样的?(蟒蛇)

请告诉我如何编写nuxt插件'printd'

Pascal,请告诉我这个循环是如何工作的

请告诉我为什么它错了(LCM & GCD)

请告诉我如何制作跟随角色的UI

PHP 请告诉我如何访问对象键

我正在尝试使用 swift 4 解析 json,请告诉我它有什么问题?

Bootstrap 的网格布局没有并排放置图像和文本。请告诉我我做错了什么?

有人可以告诉我一种在Google App脚本中执行此操作的方法吗

您能否告诉我,而不是python中的反斜杠“ \”,还有其他可用的方法吗?