“与”的区别是什么-c opt";及--copt=-O3";在Bazel构建中(或GCC)
我正在学习GCC和Bazel。我想为Bazel启用所有优化,以构建一个需要最佳性能的项目 然后我找到了“与”的区别是什么-c opt";及--copt=-O3";在Bazel构建中(或GCC),gcc,compiler-optimization,bazel,Gcc,Compiler Optimization,Bazel,我正在学习GCC和Bazel。我想为Bazel启用所有优化,以构建一个需要最佳性能的项目 然后我找到了-c opt,这意味着在没有调试信息的情况下将编译模式设置为优化 和--copt=-O3表示将优化级别设置为第三级。有-O2,-Os等 我对这两种选择感到困惑 -c opt和-copt=-O3之间有什么区别 他们会互相触发吗。因此,我只需要使用bazel build编写其中一个 --copt用于将参数传递给编译器 -c是。 其效果如以下所述: 它设置编译器选项(例如-c opt意味着-O2-D
-c opt
,这意味着在没有调试信息的情况下将编译模式设置为优化
和--copt=-O3
表示将优化级别设置为第三级。有-O2
,-Os
等
我对这两种选择感到困惑
-c opt
和-copt=-O3
之间有什么区别bazel build
编写其中一个--copt
用于将参数传递给编译器
-c
是。
其效果如以下所述:
- 它设置编译器选项(例如
意味着-c opt
)-O2-DNDEBUG
- 每个编译模式有不同的输出目录,因此您可以在调试和优化版本之间切换,而无需完全重新编译
-c opt
就足够了。如果您想要-c opt
的行为,但需要不同的优化级别,那么可以将两个选项组合在一起,如-c opt--copt=-O3
,编译器将获得两个选项-O2
和-O3
,但最后一个选项将获胜
注意,还有第三种类似的选择:
--config=configname
用于选择配置。您可以有一个定义默认选项的.bazelrc
。其中一些并不总是处于活动状态,但只有通过--config=configname
命令行选项激活它们时,它们才会处于活动状态。现在,opt
是一个流行的配置名,因此如果您有一个包含
build:opt --copt=-O3
然后,
bazel build--config=opt
与bazel build--copt=-O3
具有相同的效果,非常感谢!我还发现有人提到--config=opt。现在一切都清楚了。