bazel选项的部分翻译,希望给编译tf的童鞋参考
Posted xizero00
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bazel选项的部分翻译,希望给编译tf的童鞋参考相关的知识,希望对你有一定的参考价值。
(1)bazel的选项解释 The following sections describe the options available during a build. When --long
is used on a help command, the on-line help messages provide summary information about the meaning, type and default value for each option.
1)指定包的位置的选项 See also the
--show_package_location
option.
--package_path
This option specifies the set of directories that are searched to find the BUILD file for a given package.
该选项指定搜索BUILD文件的目录集合
--deleted_packages
This option specifies a comma-separated list of packages which Bazel should consider deleted, and not attempt to load from any directory on the package path. This can be used to simulate the deletion of packages without actually deleting them.
该选项以逗号为分隔符来指定那些包bazel需要忽略,这个选项并不是真的删除包,而是忽略某个或者某些包
2)错误检查选项
Error checking options
These options control Bazel's error-checking and/or warnings. 错误检查选项,该选项控制bazel的错误检查或者告警信息--check_constraint constraint
该选项的输入指定那些限制应该被检查,bazel将会对每个规则执行特别的检查,支持的限制包括public
This option takes an argument that specifies which constraint should be checked.
Bazel performs special checks on each rule that is annotated with the given constraint.
The supported constraints and their checks are as follows:
public
: Verify that all java_libraries marked withconstraints = ['public']
only depend on java_libraries that are marked asconstraints = ['public']
too. If bazel finds a dependency that does not conform to this rule, bazel will issue an error.
--[no]check_visibility
If this option is set to false, visibility checks are demoted to warnings. The default value of this option is true, so that by default, visibility checking is done.
该选择如果设置为false,则不会告警,默认是true,需要检查可见性
--experimental_action_listener=label
The experimental_action_listener
option instructs Bazel to use details from the action_listener
rule specified by label to insert extra_actions
into the build graph.
--experimental_extra_action_filter=regex
The experimental_extra_action_filter
option instructs Bazel to filter the set of targets to schedule extra_actions
for.
This flag is only applicable in combination with the --experimental_action_listener
flag.
By default all extra_actions
in the transitive closure of the requested targets-to-build get scheduled for execution. --experimental_extra_action_filter
will restrict scheduling to extra_actions
of which the owner's label matches the specified regular expression.
The following example will limit scheduling of extra_actions
to only apply to actions of which the owner's label contains '/bar/':
--experimental_extra_action_filter=.*/bar/.*
--output_filter regex
该选项将会显示那些符合正则表达式的构建和编译的警告。如果目标不匹配则标准输出和标准错误将会被丢弃。该选项就是用于帮助找到某些特定的警告的
The
--output_filter
option will only show build and compilation warnings for targets that match the regular expression. If a target does not match the given regular expression and its execution succeeds, its standard output and standard error are thrown away. This option is intended to be used to help focus efforts on fixing warnings in packages under development. Here are some typical values for this option:
下面是几个例子:
--output_filter= | Show all output. |
--output_filter='^//(first/project|second/project):' | Show the output for the specified packages. |
--output_filter='^//((?!(first/bad_project|second/bad_project):).)*$' | Don't show output for the specified packages. |
--output_filter=DONT_MATCH_ANYTHING | Don't show output. |
--[no]analysis_warnings_as_errors
When this option is enabled, visible analysis warnings (as specified by the output filter) are treated as errors, effectively preventing the build phase from starting. This feature can be used to enable strict builds that do not allow new warnings to creep into a project.
3)标志选项
Flags options
These options control which options Bazel will pass to other tools.
--copt gcc-option
该选项指定给gcc传递什么参数
This option takes an argument which is to be passed to gcc. The argument will be passed to gcc whenever gcc is invoked for preprocessing, compiling, and/or assembling C, C++, or assembler code. It will not be passed when linking.
This option can be used multiple times. For example:
例子如下:
% bazel build --copt="-g0" --copt="-fpic" //foo
will compile the foo
library without debug tables, generating position-independent code.
Note that changing --copt
settings will force a recompilation of all affected object files. Also note that copts values listed in specific cc_library or cc_binary build rules will be placed on the gcc command line after these options.
Warning: C++-specific options (such as -fno-implicit-templates
) should be specified in --cxxopt
, not in --copt
. Likewise, C-specific options (such as -Wstrict-prototypes) should be specified in --conlyopt
, not in copt
. Similarly, gcc options that only have an effect at link time (such as -l
) should be specified in --linkopt
, not in --copt
.
--host_copt gcc-option
该选项指定在host上进行编译时,给gcc在处理源码文件的时候需要传递给gcc的参数
This option takes an argument which is to be passed to gcc for source files that are compiled in the host configuration. This is analogous to the
--copt
option, but applies only to the host configuration.
--conlyopt gcc-option
该选项在gcc编辑c文件的时候需要传递给gcc的参数
This option takes an argument which is to be passed to gcc when compiling C source files.
This is similar to --copt
, but only applies to C compilation, not to C++ compilation or linking. So you can pass C-specific options (such as -Wno-pointer-sign
) using --conlyopt
.
Note that copts parameters listed in specific cc_library or cc_binary build rules will be placed on the gcc command line after these options.
--cxxopt gcc-option
该选项在gcc编辑c++文件的时候需要传递给gcc的参数
This option takes an argument which is to be passed to gcc when compiling C++ source files.
This is similar to --copt
, but only applies to C++ compilation, not to C compilation or linking. So you can pass C++-specific options (such as -fpermissive
or -fno-implicit-templates
) using --cxxopt
. For example:
% bazel build --cxxopt="-fpermissive" --cxxopt="-Wno-error" //foo/cruddy_code
Note that copts parameters listed in specific cc_library or cc_binary build rules will be placed on the gcc command line after these options.
--linkopt linker-option
该选项在gcc进行链接的时候需要传递给gcc的参数
This option takes an argument which is to be passed to gcc when linking.
This is similar to --copt
, but only applies to linking, not to compilation. So you can pass gcc options that only make sense at link time (such as -lssp
or -Wl,--wrap,abort
) using --linkopt
. For example:
% bazel build --copt="-fmudflap" --linkopt="-lmudflap" //foo/buggy_code
Build rules can also specify link options in their attributes. This option's settings always take precedence. Also seecc_library.linkopts.
--strip (always|never|sometimes)
该选项指定是否从二进制文件和共享库文件中去除调试信息
This option determines whether Bazel will strip debugging information from all binaries and shared libraries, by invoking the linker with the
-Wl,--strip-debug
option.
--strip=always
means always strip debugging information.
--strip=never
means never strip debugging information. The default value of
--strip=sometimes
means strip iff the
--compilation_mode
is
fastbuild
.
% bazel build --strip=always //foo:bar
will compile the target while stripping debugging information from all generated binaries.
Note that if you want debugging information, it's not enough to disable stripping; you also need to make sure that the debugging information was generated by the compiler, which you can do by using either -c dbg
or --copt -g
.
Note also that Bazel's --strip
option corresponds with ld's --strip-debug
option: it only strips debugging information. If for some reason you want to strip all symbols, not just debug symbols, you would need to use ld's --strip-all
option, which you can do by passing --linkopt=-Wl,--strip-all
to Bazel.
--stripopt strip-option
An additional option to pass to the strip
command when generating a *.stripped
binary. The default is -S -p
. This option can be used multiple times.
Note that --stripopt
does not apply to the stripping of the main binary with --strip=(always|sometimes)
.
--fdo_instrument profile-output-dir
The --fdo_instrument
option enables the generation of FDO (feedback directed optimization) profile output when the built C/C++ binary is executed. For GCC, the argument provided is used as a directory prefix for a per-object file directory tree of .gcda files containing profile information for each .o file.
Once the profile data tree has been generated, the profile tree should be zipped up, and provided to the --fdo_optimize=profile-zip
Bazel option to enable the FDO optimized compilation.
For the LLVM compiler the argument is also the directory under which the raw LLVM profile data file(s) is dumped, e.g. --fdo_instrument=/path/to/rawprof/dir/
.
The options --fdo_instrument
and --fdo_optimize
cannot be used at the same time.
--fdo_optimize profile-zip
The --fdo_optimize
option enables the use of the per-object file profile information to perform FDO (feedback directed optimization) optimizations when compiling. For GCC, the argument provided is the zip file containing the previously-generated file tree of .gcda files containing profile information for each .o file.
Alternatively, the argument provided can point to an auto profile identified by the extension .afdo.
Note that this option also accepts labels that resolve to source files. You may need to add an exports_files
directive to the corresponding package to make the file visible to Bazel.
For the LLVM compiler the argument provided should point to the indexed LLVM profile output file prepared by the llvm-profdata tool, and should have a .profdata extension.
The options --fdo_instrument
and --fdo_optimize
cannot be used at the same time.
--lipo (off|binary)
The --lipo=binary
option enables LIPO (Lightweight Inter-Procedural Optimization). LIPO is an extended C/C++ optimization technique that optimizes code across different object files. It involves compiling each C/C++ source file differently for every binary. This is in contrast to normal compilation where compilation outputs are reused. This means that LIPO is more expensive than normal compilation.
This option only has an effect when FDO is also enabled (see the --fdo_instrument and --fdo_options). Currently LIPO is only supported when building a single cc_binary
rule.
Setting --lipo=binary
implicitly sets --dynamic_mode=off
.
--lipo_context context-binary
Specifies the label of a cc_binary
rule that was used to generate the profile information for LIPO that was given to the --fdo_optimize
option.
Specifying the context is mandatory when --lipo=binary
is set. Using this option implicitly also sets --linkopt=-Wl,--warn-unresolved-symbols
.
--[no]output_symbol_counts
If enabled, each gold-invoked link of a C++ executable binary will also output a symbol counts file (via the --print-symbol-counts
gold option) that logs the number of symbols from each .o input that were used in the binary. This can be used to track unnecessary link dependencies. The symbol counts file is written to the binary's output path with the name [targetname].sc
.
This option is disabled by default.
--jvmopt jvm-option
传递给jvm的选项
This option allows option arguments to be passed to the Java VM. It can be used with one big argument, or multiple times with individual arguments. For example:
% bazel build --jvmopt="-server -Xms256m" java/com/example/common/foo:all
will use the server VM for launching all Java binaries and set the startup heap size for the VM to 256 MB.
--javacopt javac-option
传递给javac的选项
This option allows option arguments to be passed to javac. It can be used with one big argument, or multiple times with individual arguments. For example:
% bazel build --javacopt="-g:source,lines" //myprojects:prog
will rebuild a java_binary with the javac default debug info (instead of the bazel default).
The option is passed to javac after the Bazel built-in default options for javac and before the per-rule options. The last specification of any option to javac wins. The default options for javac are:
-source 8 -target 8 -encoding UTF-8
Note that changing --javacopt
settings will force a recompilation of all affected classes. Also note that javacopts parameters listed in specific java_library or java_binary build rules will be placed on the javac command line afterthese options.
-extra_checks[:(off|on)]
是否打开额外的正确性检查
This javac option enables extra correctness checks. Any problems found will be presented as errors. Either
-extra_checks
or
-extra_checks:on
may be used to force the checks to be turned on.
-extra_checks:off
completely disables the analysis. When this option is not specified, the default behavior is used.
--strict_java_deps (default|strict|off|warn|error)
控制是否javac是否需要检查是否丢失直接的依赖
This option controls whether javac checks for missing direct dependencies. Java targets must explicitly declare all directly used targets as dependencies. This flag instructs javac to determine the jars actually used for type checking each java file, and warn/error if they are not the output of a direct dependency of the current target.
off
means checking is disabled.warn
means javac will generate standard java warnings of type[strict]
for each missing direct dependency.default
,strict
anderror
all mean javac will generate errors instead of warnings, causing the current target to fail to build if any missing direct dependencies are found. This is also the default behavior when the flag is unspecified.
--javawarn (all|cast|deprecation|empty|unchecked|fallthrough|path|rawtypes|serial|finally|overrides)
是否显示java在编译过程中的警告
This option is used to enable Java warnings across an entire build. It takes an argument which is a javac warning to be enabled, overriding any other Java options that disable the given warning. The arguments to this option are appended to the "-Xlint:" flag to javac, and must be exactly one of the listed warnings.
For example:
% bazel build --javawarn="deprecation" --javawarn="unchecked" //java/...Note that changing
--javawarn
settings will force a recompilation of all affected classes.
4)语义选项
Semantics options
These options affect the build commands and/or the output file contents. 影响构建的命令和输出的内容--compilation_mode (fastbuild|opt|dbg)
(-c)
指定编译模式:快速编译还是调试还是最优化
This option takes an argument of
fastbuild
,
dbg
or
opt
, and affects various C/C++ code-generation options, such as the level of optimization and the completeness of debug tables. Bazel uses a different output directory for each different compilation mode, so you can switch between modes without needing to do a full rebuild
every time.
fastbuild
means build as fast as possible: generate minimal debugging information (-gmlt -Wl,-S
), and don't optimize. This is the default. Note:-DNDEBUG
will not be set.dbg
means build with debugging enabled (-g
), so that you can use gdb (or another debugger).opt
means build with optimization enabled and withassert()
calls disabled (-O2 -DNDEBUG
). Debugging information will not be generated inopt
mode unless you also pass--copt -g
.
--cpu cpu
指定目标gpu的架构
This option specifies the target CPU architecture to be used for the compilation of binaries during the build.
Note that a particular combination of crosstool version, compiler version, libc version, and target CPU is allowed only if it has been specified in the currently used CROSSTOOL file.
--host_cpu cpu
指定编译的机器的cpu架以上是关于bazel选项的部分翻译,希望给编译tf的童鞋参考的主要内容,如果未能解决你的问题,请参考以下文章
跪求实现tf-idf的java代码,答出来的童鞋给50分!!!泪奔……