Как включить в 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"],
)
Также обратите внимание, что эта концепция может применяться к другим вещам, таким как включает, флаги, источники, заголовки и т. Д.
Есть 2 варианта. Первый использует выберите функцию. С помощью select вы можете условно установить значение атрибута в зависимости от текущей конфигурации.
Второй вариант — настроить CROSSTOOL файл конфигурации, поставить конкретный особенность это будет испускать разные флаги в зависимости от набора инструментов. Затем вы можете включить эту функцию в вашей cc_library в функции приписывать.
Первый вариант проще, второй более надежный и более инкапсулированный.
Других решений пока нет …