Bazel平台特定的C++定义

Bazel platform-specific C++ defines

本文关键字:C++ 定义 平台 Bazel      更新时间:2023-10-16

应该如何在bazel中包含特定于平台的标志?

假设我们有一个跨平台库,我们想更改其定义。

我们能做点什么吗:

defines = ["FEATURE_A"]
if somehow_detect_the_platform == 'ios':
    defines.extend("FEATURE_B")
cc_library(
    name = "foo",
    srcs = ["foo.cc"],
    defines = defines,
    hdrs = ["foo.h"],
)

还要注意,这个概念可以应用于其他东西,如include、cflags、source、headers等。

有两个选项。首先是使用选择功能。使用select,可以根据当前配置有条件地设置属性的值。

第二个选项是调整CROSSTOOL配置文件,放置一个特定的功能,该功能将根据工具链发出不同的标志。然后,您可以在特性属性中的cc_library中启用该特性。

第一个选项更简单,第二个选项更健壮、更封装。