Специфичный для платформы Bazel C ++

Как включить в 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

Решение

Есть 2 варианта. Первый использует выберите функцию. С помощью select вы можете условно установить значение атрибута в зависимости от текущей конфигурации.

Второй вариант — настроить CROSSTOOL файл конфигурации, поставить конкретный особенность это будет испускать разные флаги в зависимости от набора инструментов. Затем вы можете включить эту функцию в вашей cc_library в функции приписывать.

Первый вариант проще, второй более надежный и более инкапсулированный.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]