gpt4 book ai didi

cross-platform - bazel 中依赖于平台的链接器标志(用于过剩)

转载 作者:行者123 更新时间:2023-12-02 08:12:30 25 4
gpt4 key购买 nike

我正在尝试使用 bazel 构建带有 glut 的 C++ 应用程序。它应该适用于 macos 和 linux。现在的问题是,在 macOS 上它需要将 "-framework OpenGL", "-framework GLUT" 传递给链接器标志,而在 linux 上我应该做类似的事情
cc_library(
名称=“过剩”,
srcs = glob(["local/lib/libglut*.dylib", "lib/libglut*.so"]),
...
在 glut.BUILD 中。所以问题是1. 通常如何为 cc_library 规则提供依赖于平台的链接器选项?2. 特别是如何使用 bazel 以独立于平台的方式链接到过剩?

最佳答案

您可以使用 Bazel select() 执行此操作功能。这样的事情可能会起作用:

config_setting(
name = "linux_x86_64",
values = {"cpu": "k8"},
visibility = ["//visibility:public"],
)

config_setting(
name = "darwin_x86_64",
values = {"cpu": "darwin_x86_64"},
visibility = ["//visibility:public"],
)

cc_library(
name = "glut",
srcs = select({
":darwin_x86_64": [],
":linux_x86_64": glob(["local/lib/libglut*.dylib", "lib/libglut*.so"]),
}),
linkopts = select({
":darwin_x86_64": [
"-framework OpenGL",
"-framework GLUT"
],
":linux_x86_64": [],
})
...
)

在 Bazel github 存储库中挖掘,它有一些使用 select() 的真实世界的好例子。

关于cross-platform - bazel 中依赖于平台的链接器标志(用于过剩),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45186465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com