Изменить командную строку компилятора с помощью Bazel - PullRequest
2 голосов
/ 10 марта 2020

Я хотел бы иметь полный контроль над аргументами командной строки, которые Bazel передает компилятору при компиляции и компоновке файлов C ++. Например, , я хотел бы использовать G ++ из пользовательского пути, я хотел бы изменить -std=c++0x на -std=c++14 и удалить -fno-omit-frame-pointer - со следующими ограничениями:

  • Не устанавливайте компилятор через CC envvar, так как это * fr agile
  • Избегайте использования --crosstool_top et. Я понимаю, что Базель уходит от него
  • Будь совместим с --all_incompatible_changes
  • Не просто переопределяй эти аргументы через copts, так как это fr agile и выдает ошибку склонные команды

Предпочтительно, я бы хотел получить автоматически обнаруженную, сгенерированную цепочку инструментов, изменить ее и зафиксировать в моей рабочей области, чтобы она использовалась каждой целью C ++ в рабочей области, включая импортированную, из скомпилированных исходных рабочих пространств.

Я смотрел на Наборы инструментов , Настройка набора инструментов C ++ , rules_ cc - но я не мог понять это вне.

Ответы [ 2 ]

2 голосов
/ 23 марта 2020

Аргументы по умолчанию (например: -fno-omit-frame-pointer или -std=c++0x) можно удалить, отключив функцию default_compile_flags, которая их предоставляет:

$ bazel build ... --features=-default_compile_flags
1 голос
/ 16 марта 2020

Добавьте .bazelrc к вашему проекту. Добавьте строки

build:your_config --cxxopt=-std=c++14`.

Создайте свой код:

bazel build --config=your_config //...
...