首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何禁用工具链的PIC?

如何禁用工具链的PIC?
EN

Stack Overflow用户
提问于 2022-08-11 21:09:09
回答 1查看 84关注 0票数 0

我有定制的工具链,

代码语言:javascript
运行
复制
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?

我可以从命令行全局禁用该功能,

代码语言:javascript
运行
复制
# This works.
$ bazel build --features=-pic

我也可以在每个目标或每包的基础上禁用它,

代码语言:javascript
运行
复制
# This works.
cc_library(
    name = "..."
    features = ["-pic"],
    # ...
)

有办法禁用整个工具链吗?将features添加到cc_toolchain不会做任何事情:

代码语言:javascript
运行
复制
# 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 ...
)
EN

回答 1

Stack Overflow用户

发布于 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_librarycc_binary

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73326906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档