我有定制的工具链,
load("@rules_cc//cc:defs.bzl", "cc_toolchain")
load("@bazel_tools//tools/cpp:unix_cc_toolchain_config.bzl", "cc_toolchain_config")
cc_toolchain_config(
name = "config-gba",
# ... omitted ...
)
cc_toolchain(
name = "cc-compiler-gba",
toolchain_config = ":config-gba",
# ... omitted ...
)这个工具链起作用了。
我刚迁移到unix_cc_toolchain_config.bzl,但是我需要禁用这个工具链的PIC。如何禁用工具链的PIC?
我可以从命令行全局禁用该功能,
# This works.
$ bazel build --features=-pic我也可以在每个目标或每包的基础上禁用它,
# This works.
cc_library(
name = "..."
features = ["-pic"],
# ...
)有办法禁用整个工具链吗?将features添加到cc_toolchain不会做任何事情:
# This doesn't disable PIC compilation for targets compiled
# with this toolchain.
cc_toolchain(
name = "cc-compiler-gba",
toolchain_config = ":config-gba",
features = ["-pic"],
# ... omitted ...
)发布于 2022-08-12 04:11:07
Bazel通过检查supports_pic工具链特性的启用情况来决定工具链是否支持PIC。unix_cc_toolchain_config.bzl无条件地启用supports_pic特性。因此,删除它的唯一途径是分叉unix_cc_toolchain_config.bzl。
(将features设置为cc_toolchain规则是一个noop。每个规则都隐式地有一个features属性,但是使用它的规则或多或少都是构建C++的规则,比如cc_library和cc_binary。
https://stackoverflow.com/questions/73326906
复制相似问题