Yu *_*ang 2 gcc compiler-optimization bazel
我正在学习GCC和Bazel。我想对bazel启用所有优化,以构建需要最佳性能的项目。
然后我发现“ -c opt”,这意味着将编译模式设置为没有调试信息就可以优化。
“ --copt = -O3”表示将优化级别设置为第三级。有-O2 -Os等。
我对这两种选择感到困惑。
1)“ -c opt”和“ --copt = -O3”有什么区别?2)他们会互相触发。所以我只需要用bazel build编写其中之一?
--copt 用于将args传递给编译器。
-c是--compilation-mode的缩写。其效果在用户手册中进行了描述:
-c opt隐含-O2 -DNDEBUG)因此通常-c opt就足够了。如果您想要的行为-c opt却具有不同的优化级别,则可以组合使用in -c opt --copt=-O3和in这样的两个选项,编译器将同时获得-O2和-O3,但是最后一个将获胜。
请注意,还有第三种类似的选择:
--config=configname用于选择配置。您可以使用.bazelrc定义默认选项。其中一些并不总是处于活动状态,但只有在您通过--config=configname命令行选项将其激活后,它们才会处于活动状态。现在opt是一个流行的配置名,所以如果您有一个.bazelrc包含
build:opt --copt=-O3
Run Code Online (Sandbox Code Playgroud)
然后bazel build --config=opt具有与bazel build --copt=-O3