В чем разница между "-c opt" и "--copt = -O3" в сборке Bazel (или GCC) - PullRequest
0 голосов
/ 18 мая 2018

Я изучаю GCC и Bazel.Я хочу включить оптимизацию для Bazel для создания проекта, который требует наилучшей производительности.

Затем я нашел «-c opt», который означает установить режим компиляции на оптимизированный без отладочной информации.

И «--copt = -O3» означает установить уровень оптимизации на третийодин.Есть -O2 -Os и т. Д.

Я запутался с этими двумя вариантами.

1) В чем разница между "-c opt" и "--copt = -O3«?2) Будут ли они вызывать друг друга.Так что мне нужно написать один из них с помощью bazel build?

1 Ответ

0 голосов
/ 18 мая 2018

--copt - для передачи аргументов компилятору.

-c - это краткая форма - режим компиляции .Его эффект описан в руководстве пользователя :

  • Устанавливает параметры компилятора (например, -c opt подразумевает -O2 -DNDEBUG)
  • Существуют разные выходные каталогина режим компиляции, так что вы можете переключаться между отладочной и оптимизированной сборками без полной перекомпиляции.

Так что обычно достаточно -c opt.Если вам нужно поведение -c opt, но с другим уровнем оптимизации, вы объедините два параметра, как в -c opt --copt=-O3, и компилятор получит оба параметра -O2 и -O3, но последний из них выиграет.

И остерегайтесь, существует третий аналогичный вариант:

--config=configname для выбора конфигурации.Вы можете иметь .bazelrc, который определяет параметры по умолчанию.Некоторые из них не всегда активны, но некоторые, только если вы активируете их с помощью параметра командной строки --config=configname.Сейчас opt является популярным именем, поэтому если у вас есть .bazelrc, который содержит

build:opt --copt=-O3

, то bazel build --config=opt имеет тот же эффект, что и bazel build --copt=-O3

...