Посмотрите в файле .bazelrc .Например, он определяет build:android_arm --config=android
.Это означает, что вы можете встроить bazel с помощью bazel build --config=android
- я полагаю, что компилятор с целевым android предоставляет в системном заголовке определения ANDROID
и __ANDROID__
- так что вам не нужно явно изменять цель cc_binary
.
Вы также можете явно добавить определения к cc_binary
:
Цель cc_binary
предоставляет атрибут define
и copts
:
cc_binary(name, deps, srcs, data, args, compatible_with, copts, defines, deprecation, distribs, exec_compatible_with, features, includes, licenses, linkopts, linkshared, linkstatic, malloc, nocopts, output_licenses, restricted_to, stamp, tags, testonly, toolchains, visibility, win_def_file)
Из документация :
определяет: List of strings; optional
Список определений, добавляемых в строку компиляции.Подлежит подстановке переменных «Make» и токенизации оболочки Bourne.Каждая строка, которая должна состоять из одного токена оболочки Bourne, должна начинаться с -D
(или /D
в Windows) и добавляться к COPTS
.В отличие от copts
, эти флаги добавляются для цели и каждого правила, которое от нее зависит!Будьте очень осторожны, так как это может иметь далеко идущие последствия.В случае сомнений, добавьте флаги «-D» (или / D в Windows) к copts
.
Я бы порекомендовал вам добавить определение к атрибуту copts
, например:
cc_binary(
srcs = ["main.cpp"],
copts = ["-DMY_DEFINE"],
)