我正在学习GCC和Bazel。我想为bazel启用所有优化来构建一个需要最佳性能的项目。
然后我找到了“-c opt”,这意味着在没有调试信息的情况下将编译模式设置为优化。
并且“--copt = -O3”表示将优化级别设置为第三个。有-O2 -Os等。
我对这两个选项感到困惑。
1)“-c opt”和“--copt = -O3”之间有什么区别? 2)他们会互相触发吗?所以我只需要用bazel build编写其中一个?
答案 0 :(得分:4)
--copt
用于将args传递给编译器。
-c
是--compilation-mode的缩写形式。
其效果在user-manual:
-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