Конфигурация "копты" на основе компилятора (gcc vs clang) в Bazel - PullRequest
2 голосов
/ 03 ноября 2019

У меня есть C-проект на базе Bazel, и я хочу скомпилировать его с gcc и clang в Linux. Чтобы переключаться между компиляторами, я добавляю к вызову CC=<compiler, например, так:

CC=clang bazel build //my-package:my-target

Это работает, как и ожидалось, за исключением того, что я также вызываю правило Базеля с параметром copts:

cc_binary(
    name = "my-target",
    srcs = [
        "my-src.c",
    ],
    copts = [
        "-std=c89",
        "-Wno-unused-label",
        "-Wno-unused-variable",
        "-Wno-unused-but-set-variable",
        "-Wno-misleading-indentation",
    ],
)

Это работает, но я получаю сообщения "неизвестная опция предупреждения" от clang:

warning: unknown warning option '-Wno-unused-but-set-variable'; did you mean '-Wno-unused-const-variable'? [-Wunknown-warning-option]

warning: unknown warning option '-Wno-misleading-indentation'; did you mean '-Wno-binding-in-condition'? [-Wunknown-warning-option]

Можно ли указать copts аргументы , условные на компиляторе Cиспользуется для конкретного вызова Bazel?

1 Ответ

1 голос
/ 03 ноября 2019

Создайте файл .bazelrc и используйте параметр --config.

Я использую Visual Studio 2019 и GCC для создания своего кода.

My .bazelrc :

build:vs2019 --cxxopt=/std:c++17

build:gcc --cxxopt=-std=c++17

Visual Studio 2019

Сборка

bazel build --config=vs2019 //...

Тест

bazel test --config vs2019 //...

gcc

Сборка

bazel build --config gcc //...

Тест

bazel test --config gcc //...
...