Trang này bao gồm các tuỳ chọn có sẵn với nhiều lệnh Bazel,
chẳng hạn như bazel build
, bazel run
và bazel test
. Đây là trang đồng hành
vào danh sách các lệnh của Bazel trong phần Build with Bazel (Tạo bằng Bazel).
Cú pháp đích
Một số lệnh (như build
hoặc test
) có thể hoạt động trên một danh sách mục tiêu. Chúng
sử dụng cú pháp linh hoạt hơn nhãn, được ghi chép bằng
Chỉ định mục tiêu để tạo.
Tùy chọn
Các phần sau đây mô tả các tuỳ chọn có sẵn trong khi
bản dựng. Khi --long
được sử dụng trong lệnh trợ giúp, lệnh
thông báo trợ giúp cung cấp thông tin tóm tắt về ý nghĩa, loại và
giá trị mặc định cho mỗi lựa chọn.
Hầu hết các lựa chọn đều chỉ có thể được chỉ định một lần. Khi được chỉ định nhiều lần, trường hợp cuối cùng sẽ thắng. Các tuỳ chọn có thể được chỉ định nhiều lần là được xác định trong phần trợ giúp trực tuyến với nội dung "có thể được sử dụng nhiều lần".
Vị trí gói hàng
--package_path
Tuỳ chọn này chỉ định tập hợp các thư mục sẽ được tìm kiếm hãy tìm tệp BUILD cho một gói nhất định.
Bazel tìm các gói của mình bằng cách tìm đường dẫn gói. Đây là dấu hai chấm danh sách thư mục bazel có thứ tự riêng, mỗi thư mục là gốc của một cây nguồn từng phần.
Cách chỉ định đường dẫn gói tuỳ chỉnh bằng tuỳ chọn --package_path
:
% bazel build --package_path %workspace%:/some/other/root
Bạn có thể chỉ định các phần tử đường dẫn gói ở 3 định dạng:
- Nếu ký tự đầu tiên là
/
, đường dẫn sẽ là đường dẫn tuyệt đối. - Nếu đường dẫn bắt đầu bằng
%workspace%
, thì đường dẫn đó sẽ được lấy tương đối vào thư mục bazel bao quanh gần nhất. Ví dụ: nếu thư mục đang làm việc của bạn là/home/bob/clients/bob_client/bazel/foo
, thì chuỗi%workspace%
trong đường dẫn gói được mở rộng đến/home/bob/clients/bob_client/bazel
. - Mọi hoạt động khác sẽ được lấy liên quan đến thư mục đang hoạt động.
Đây thường không phải là ý định của bạn,
và có thể hoạt động không như mong đợi nếu bạn sử dụng Bazel từ các thư mục bên dưới không gian làm việc bazel.
Ví dụ: nếu bạn sử dụng phần tử package-path
.
, rồi cd vào thư mục/home/bob/clients/bob_client/bazel/foo
, gói sẽ được giải quyết từ Thư mục/home/bob/clients/bob_client/bazel/foo
.
Nếu bạn sử dụng một đường dẫn gói không phải mặc định, hãy chỉ định đường dẫn đó trong Tệp cấu hình Bazel để thuận tiện.
Bazel không yêu cầu bất kỳ gói nào phải nằm trong thư mục hiện tại để bạn có thể tạo bản dựng từ một bazel trống Workspace nếu có thể tìm thấy tất cả các gói cần thiết ở một nơi khác trên đường dẫn gói.
Ví dụ: Xây dựng từ một ứng dụng trống
% mkdir -p foo/bazel % cd foo/bazel % touch WORKSPACE % bazel build --package_path /some/other/path //foo
--deleted_packages
Lựa chọn này chỉ định một danh sách các gói được phân tách bằng dấu phẩy mà Bazel nên xem xét xoá và không tìm cách tải từ bất kỳ thư mục nào trên đường dẫn gói. Công cụ này có thể dùng để mô phỏng việc xoá gói mà không cần xoá chúng.
Lỗi khi kiểm tra
Các tuỳ chọn này kiểm soát việc kiểm tra lỗi và/hoặc cảnh báo của Bazel.
--[no]check_visibility
Nếu bạn đặt tuỳ chọn này thành false, thì tính năng kiểm tra khả năng hiển thị sẽ bị giảm hạng xuống thành cảnh báo. Giá trị mặc định của tuỳ chọn này là true, để theo mặc định, chế độ hiển thị đã kiểm tra xong.
--output_filter=regex
Tuỳ chọn --output_filter
sẽ chỉ hiển thị bản dựng và biên dịch
cảnh báo cho các mục tiêu khớp với biểu thức chính quy. Nếu một mục tiêu không
khớp với biểu thức chính quy đã cho và thực thi thành công biểu thức đó
đầu ra và sai số chuẩn bị loại bỏ.
Dưới đây là một số giá trị điển hình cho tuỳ chọn này:
`--output_filter='^//(first/project|second/project):'` | Hiện kết quả cho các gói được chỉ định. |
`--output_filter='^//((?!(first/bad_project|second/bad_project):).)*$'` | Không hiện kết quả cho các gói được chỉ định. |
`--output_filter=` | Hiện mọi thứ. |
`--output_filter=DONT_MATCH_ANYTHING` | Không hiển thị gì. |
Cờ công cụ
Các tuỳ chọn này kiểm soát những tuỳ chọn mà Bazel sẽ chuyển sang các công cụ khác.
--copt=cc-option
Tuỳ chọn này sẽ lấy một đối số sẽ được truyền đến trình biên dịch. Đối số sẽ được truyền đến trình biên dịch bất cứ khi nào nó được gọi để tiền xử lý, biên dịch và/hoặc lắp ráp C, C++, hoặc tập hợp mã. Mã này sẽ không được chuyển khi liên kết.
Bạn có thể sử dụng lựa chọn này nhiều lần. Ví dụ:
% bazel build --copt="-g0" --copt="-fpic" //foo
sẽ biên dịch thư viện foo
mà không có bảng gỡ lỗi, tạo
không phụ thuộc vào vị trí.
--host_copt=cc-option
Tuỳ chọn này sẽ lấy một đối số sẽ được truyền đến trình biên dịch cho các tệp nguồn
được biên dịch trong cấu hình máy chủ lưu trữ. Điều này tương tự với
tuỳ chọn --copt
, nhưng chỉ áp dụng cho
cấu hình máy chủ lưu trữ.
--host_conlyopt=cc-option
Tuỳ chọn này sẽ lấy một đối số sẽ được truyền đến trình biên dịch cho các tệp nguồn C
được biên dịch trong cấu hình máy chủ lưu trữ. Điều này tương tự với
tuỳ chọn --conlyopt
, nhưng chỉ áp dụng
cho cấu hình máy chủ lưu trữ.
--host_cxxopt=cc-option
Tuỳ chọn này sẽ lấy một đối số sẽ được truyền đến trình biên dịch cho các tệp nguồn C++
được biên dịch trong cấu hình máy chủ lưu trữ. Điều này tương tự với
tuỳ chọn --cxxopt
, nhưng chỉ áp dụng cho
cấu hình máy chủ lưu trữ.
--host_linkopt=linker-option
Tuỳ chọn này sẽ lấy một đối số sẽ được truyền đến trình liên kết cho các tệp nguồn
được biên dịch trong cấu hình máy chủ lưu trữ. Điều này tương tự với
tuỳ chọn --linkopt
, nhưng chỉ áp dụng cho
cấu hình máy chủ lưu trữ.
--conlyopt=cc-option
Tuỳ chọn này sẽ lấy một đối số sẽ được truyền đến trình biên dịch khi biên dịch tệp nguồn C.
Thuộc tính này tương tự như --copt
, nhưng chỉ áp dụng cho quá trình biên dịch C,
không phải liên kết hoặc biên dịch C++. Để bạn có thể chuyển các tuỳ chọn dành riêng cho C
(chẳng hạn như -Wno-pointer-sign
) bằng --conlyopt
.
--cxxopt=cc-option
Tuỳ chọn này sẽ lấy một đối số sẽ được truyền cho trình biên dịch khi biên dịch tệp nguồn C++.
Thuộc tính này tương tự như --copt
, nhưng chỉ áp dụng cho quá trình biên dịch C++,
chứ không phải liên kết hoặc biên dịch C. Để bạn có thể chuyển các tuỳ chọn dành riêng cho C++
(chẳng hạn như -fpermissive
hoặc -fno-implicit-templates
) sử dụng --cxxopt
.
Ví dụ:
% bazel build --cxxopt="-fpermissive" --cxxopt="-Wno-error" //foo/cruddy_code
--linkopt=linker-option
Tuỳ chọn này sẽ lấy một đối số sẽ được truyền đến trình biên dịch khi liên kết.
Điều này tương tự như --copt
, nhưng chỉ áp dụng cho việc liên kết,
không phải biên dịch. Vì vậy, bạn có thể truyền các tuỳ chọn trình biên dịch chỉ hợp lý
tại thời điểm liên kết (chẳng hạn như -lssp
hoặc -Wl,--wrap,abort
)
đang sử dụng --linkopt
. Ví dụ:
% bazel build --copt="-fmudflap" --linkopt="-lmudflap" //foo/buggy_code
Quy tắc tạo cũng có thể chỉ định tuỳ chọn đường liên kết trong các thuộc tính của chúng. Lựa chọn này luôn được ưu tiên. Xem thêm cc_library.linkopts
--strip (always|never|sometimes)
Tuỳ chọn này xác định xem Bazel có xoá thông tin gỡ lỗi khỏi
tất cả tệp nhị phân và thư viện dùng chung, bằng cách gọi trình liên kết với tuỳ chọn -Wl,--strip-debug
.
--strip=always
có nghĩa là luôn xoá thông tin gỡ lỗi.
--strip=never
có nghĩa là không bao giờ loại bỏ thông tin gỡ lỗi.
Giá trị mặc định của --strip=sometimes
có nghĩa là xoá nếu --compilation_mode
là fastbuild
.
% bazel build --strip=always //foo:bar
sẽ biên dịch mục tiêu trong khi xoá thông tin gỡ lỗi khỏi tất cả tệp nhị phân.
Tuỳ chọn --strip
của Bazel tương ứng với tuỳ chọn --strip-debug
của ld:
thì tệp đó chỉ xoá thông tin gỡ lỗi. Nếu vì lý do nào đó bạn muốn xoá tất cả biểu tượng,
không chỉ biểu tượng gỡ lỗi, bạn sẽ cần phải sử dụng tuỳ chọn --strip-all
của ld,
bạn có thể thực hiện bằng cách truyền --linkopt=-Wl,--strip-all
đến Bazel. Đồng thời
lưu ý rằng việc đặt cờ --strip
của Bazel sẽ ghi đè
--linkopt=-Wl,--strip-all
, vì vậy, bạn chỉ nên đặt một trong hai kích thước này.
Nếu bạn chỉ đang tạo một tệp nhị phân duy nhất và muốn loại bỏ tất cả các biểu tượng, bạn cũng có thể
và truyền --stripopt=--strip-all
một cách rõ ràng
Phiên bản //foo:bar.stripped
của mục tiêu. Như được mô tả trong phần trên
--stripopt
, thao tác này áp dụng một thao tác loại bỏ sau khi tệp nhị phân cuối cùng là
thay vì bao gồm việc loại bỏ trong tất cả thao tác liên kết của bản dựng.
--stripopt=strip-option
Đây là một tuỳ chọn bổ sung để truyền vào lệnh strip
khi tạo
tệp nhị phân *.stripped
. Mặc định
là -S -p
. Bạn có thể sử dụng lựa chọn này nhiều lần.
--fdo_instrument=profile-output-dir
Tuỳ chọn --fdo_instrument
cho phép tạo
Đầu ra của hồ sơ FDO (tối ưu hoá hướng phản hồi) khi
tệp nhị phân C/C++ đã tạo sẽ được thực thi. Đối với GCC, đối số đã cung cấp được dùng làm một
tiền tố thư mục cho cây thư mục tệp cho mỗi đối tượng của các tệp .gcda
chứa thông tin hồ sơ cho mỗi tệp .o.
Sau khi tạo cây dữ liệu hồ sơ, cây hồ sơ
phải được nén và cung cấp cho
--fdo_optimize=profile-zip
Tuỳ chọn Bazel để bật tính năng biên dịch được tối ưu hoá cho FDO.
Đối với trình biên dịch LLVM, đối số cũng là thư mục chứa hồ sơ LLVM thô
tệp dữ liệu đã được kết xuất. Ví dụ:
--fdo_instrument=/path/to/rawprof/dir/
.
Bạn không thể sử dụng các tuỳ chọn --fdo_instrument
và --fdo_optimize
cùng một lúc.
--fdo_optimize=profile-zip
Tuỳ chọn --fdo_optimize
cho phép sử dụng
thông tin cấu hình tệp cho mỗi đối tượng để thực hiện FDO (thông tin phản hồi
tối ưu hoá theo hướng dẫn) khi biên dịch. Đối với GCC, đối số
được cung cấp là tệp zip có chứa cây tệp đã tạo trước đó
tệp .gcda chứa thông tin hồ sơ cho mỗi tệp .o.
Ngoài ra, đối số được cung cấp có thể trỏ đến một hồ sơ tự động được xác định bằng đuôi .afdo.
Đối với trình biên dịch LLVM, đối số được cung cấp phải trỏ đến LLVM được lập chỉ mục tệp kết quả cho hồ sơ do công cụ llvm-profdata chuẩn bị và phải có tệp .profdata tiện ích.
Bạn không thể sử dụng các tuỳ chọn --fdo_instrument
và --fdo_optimize
cùng một lúc.
--[no]output_symbol_counts
Nếu được bật, mỗi liên kết được gọi bằng vàng của một tệp nhị phân thực thi C++ sẽ xuất ra
tệp số lượng biểu tượng (thông qua tệp --print-symbol-counts
vàng
). Đối với mỗi đầu vào của trình liên kết, tệp này sẽ ghi lại số lượng biểu tượng
định nghĩa và số lượng ký hiệu được sử dụng trong tệp nhị phân.
Bạn có thể dùng thông tin này để theo dõi các phần phụ thuộc không cần thiết của đường liên kết.
Tệp đếm biểu tượng được ghi vào đường dẫn đầu ra của tệp nhị phân kèm theo tên
[targetname].sc
.
Tuỳ chọn này bị tắt theo mặc định.
--java_language_version=version
Tuỳ chọn này chỉ định phiên bản của nguồn Java. Ví dụ:
% bazel build --java_language_version=8 java/com/example/common/foo:all
biên dịch và chỉ cho phép các cấu trúc tương thích với quy cách Java 8.
Giá trị mặc định là 11. -->
Các giá trị có thể là: 8, 9, 10, 11, 14 và 15 và có thể được mở rộng bởi
đăng ký chuỗi công cụ Java tuỳ chỉnh bằng default_java_toolchain
.
--tool_java_language_version=version
Phiên bản ngôn ngữ Java dùng để tạo các công cụ được thực thi trong quá trình tạo bản dựng. Giá trị mặc định là 11.
--java_runtime_version=version
Tuỳ chọn này chỉ định phiên bản JVM cần dùng để thực thi mã và chạy kiểm thử. Ví dụ:
% bazel run --java_runtime_version=remotejdk_11 java/com/example/common/foo:java_application
tải JDK 11 xuống từ một kho lưu trữ từ xa và chạy ứng dụng Java bằng cách sử dụng kho lưu trữ đó.
Giá trị mặc định là localjdk
.
Các giá trị có thể là: localjdk
, localjdk_version
,
remotejdk_11
và remote_jdk17
.
Bạn có thể mở rộng các giá trị bằng cách đăng ký JVM tuỳ chỉnh sử dụng
Quy tắc kho lưu trữ local_java_repository
hoặc remote_java_repostory
.
--tool_java_runtime_version=version
Phiên bản JVM được dùng để thực thi các công cụ cần thiết trong quá trình tạo bản dựng.
Giá trị mặc định là remotejdk_11
.
--jvmopt=jvm-option
Tuỳ chọn này cho phép truyền đối số tuỳ chọn đến máy ảo Java. Có thể sử dụng với một đối số lớn hoặc nhiều lần với các đối số riêng lẻ. Ví dụ:
% bazel build --jvmopt="-server -Xms256m" java/com/example/common/foo:all
sẽ sử dụng máy chủ VM để khởi chạy tất cả các tệp nhị phân Java và thiết lập kích thước vùng nhớ khối xếp khởi động cho máy ảo là 256 MB.
--javacopt=javac-option
Tuỳ chọn này cho phép truyền đối số tuỳ chọn đến javac. Có thể sử dụng với một đối số lớn hoặc nhiều lần với các đối số riêng lẻ. Ví dụ:
% bazel build --javacopt="-g:source,lines" //myprojects:prog
sẽ tạo lại một java_binary bằng thông tin gỡ lỗi mặc định của javac (thay vì mặc định bazel).
Tuỳ chọn này được chuyển đến javac sau các tuỳ chọn mặc định tích hợp sẵn Bazel cho javac và trước các tuỳ chọn cho mỗi quy tắc. Thông số kỹ thuật cuối cùng của bất kỳ tuỳ chọn nào để javac thắng. Các tuỳ chọn mặc định cho javac là:
-source 8 -target 8 -encoding UTF-8
--strict_java_deps (default|strict|off|warn|error)
Tuỳ chọn này kiểm soát việc javac có kiểm tra để tìm các phần phụ thuộc trực tiếp bị thiếu hay không. Các mục tiêu Java phải khai báo rõ ràng tất cả các mục tiêu được sử dụng trực tiếp dưới dạng phần phụ thuộc. Cờ này hướng dẫn javac xác định các tệp jar thực sự được sử dụng để kiểm tra loại tệp java và cảnh báo/lỗi nếu chúng không phải là kết quả phần phụ thuộc trực tiếp của mục tiêu hiện tại.
off
có nghĩa là tính năng kiểm tra đã tắt.warn
có nghĩa là javac sẽ tạo các cảnh báo java tiêu chuẩn của loại[strict]
cho từng phần phụ thuộc trực tiếp bị thiếu.default
,strict
vàerror
tất cả có nghĩa là javac sẽ tạo lỗi thay vì cảnh báo, khiến không thể tạo mục tiêu nếu tìm thấy bất kỳ phần phụ thuộc trực tiếp nào bị thiếu. Đây cũng là hành vi mặc định khi cờ không được chỉ định.
Xây dựng ngữ nghĩa
Các tuỳ chọn này ảnh hưởng đến các lệnh bản dựng và/hoặc nội dung của tệp đầu ra.
--compilation_mode (fastbuild|opt|dbg)
(-c)
Tuỳ chọn --compilation_mode
(thường được viết tắt thành -c
,
đặc biệt là -c opt
) sẽ lấy đối số là fastbuild
, dbg
hoặc opt
và ảnh hưởng đến nhiều quá trình tạo mã C/C++
như mức độ tối ưu hoá và mức độ hoàn chỉnh của
bảng gỡ lỗi. Bazel sử dụng một thư mục đầu ra khác nhau cho mỗi
chế độ biên dịch khác nhau nên bạn có thể
chuyển đổi giữa các chế độ mà không cần
cần phải xây dựng lại toàn bộ mỗi lần.
fastbuild
có nghĩa là tạo bản dựng nhanh nhất có thể: tạo thông tin gỡ lỗi tối thiểu (-gmlt -Wl,-S
) và không tối ưu hoá. Đây là lựa chọn mặc định. Lưu ý:-DNDEBUG
sẽ không được đặt.dbg
có nghĩa là bản dựng đã bật tính năng gỡ lỗi (-g
), để bạn có thể sử dụng gdb (hoặc một trình gỡ lỗi khác).opt
có nghĩa là bản dựng đã bật tính năng tối ưu hoá và vớiassert()
cuộc gọi bị tắt (-O2 -DNDEBUG
). Thông tin gỡ lỗi sẽ không được tạo ở chế độopt
trừ phi bạn cũng vượt qua--copt -g
.
--cpu=cpu
Tuỳ chọn này chỉ định cấu trúc CPU mục tiêu sẽ được sử dụng việc biên dịch tệp nhị phân trong quá trình tạo bản dựng.
--action_env=VAR=VALUE
Chỉ định tập hợp biến môi trường có sẵn trong quá trình thực thi tất cả hành động.
Biến có thể được chỉ định theo tên, trong trường hợp đó, giá trị sẽ được lấy từ
môi trường gọi hoặc bằng cặp name=value
đặt giá trị độc lập với
môi trường gọi.
Bạn có thể chỉ định cờ --action_env
này nhiều lần. Nếu một giá trị được gán cho cùng một
biến trên nhiều cờ --action_env
, lệnh gán mới nhất sẽ chiến thắng.
--experimental_action_listener=label
Tuỳ chọn experimental_action_listener
hướng dẫn Bazel sử dụng
thông tin chi tiết từ quy tắc action_listener
do label chỉ định thành
chèn extra_actions
vào biểu đồ bản dựng.
--[no]experimental_extra_action_top_level_only
Nếu bạn đặt tuỳ chọn này thành true, thì các thao tác bổ sung do
Lệnh --experimental_action_listener
sẽ chỉ được lập lịch cho các mục tiêu cấp cao nhất.
--experimental_extra_action_filter=regex
Tuỳ chọn experimental_extra_action_filter
hướng dẫn Bazel
lọc tập hợp các mục tiêu để lên lịch cho extra_actions
.
Cờ này chỉ áp dụng kết hợp với
Cờ --experimental_action_listener
.
Theo mặc định, tất cả extra_actions
trong quá trình đóng bắc cầu của
các mục tiêu cần xây dựng được lên lịch thực thi.
--experimental_extra_action_filter
sẽ hạn chế việc lên lịch đối với
extra_actions
trong đó nhãn của chủ sở hữu khớp với nhãn được chỉ định
biểu thức chính quy.
Ví dụ sau đây sẽ giới hạn việc lên lịch cho extra_actions
để chỉ áp dụng cho các hành động mà nhãn của chủ sở hữu chứa '/bar/':
% bazel build --experimental_action_listener=//test:al //foo/... \ --experimental_extra_action_filter=.*/bar/.*
--host_cpu=cpu
Tuỳ chọn này chỉ định tên của cấu trúc CPU cần được dùng để tạo các công cụ lưu trữ.
--fat_apk_cpu=cpu[,cpu]*
Các CPU để xây dựng thư viện C/C++ trong deps
bắc cầu của
android_binary
quy tắc. Các quy tắc C/C++ khác sẽ không bị ảnh hưởng. Ví dụ: nếu một
cc_library
xuất hiện trong deps
bắc cầu của quy tắc android_binary
và
quy tắc cc_binary
, cc_library
sẽ được tạo ít nhất 2 lần:
một lần cho mỗi CPU được chỉ định với --fat_apk_cpu
cho
android_binary
và một lần cho CPU được chỉ định bằng
--cpu
cho quy tắc cc_binary
.
Mặc định là armeabi-v7a
.
Một tệp .so
được tạo và đóng gói trong APK cho
mỗi CPU được chỉ định bằng --fat_apk_cpu
. Tên của tệp .so
thêm "lib" vào tên của quy tắc android_binary
. Ví dụ: nếu tên của
android_binary
là "foo", thì tệp là libfoo.so
.
--per_file_copt=[+-]regex[,[+-]regex]...@option[,option]...
Nếu có, mọi tệp C++ có nhãn hoặc đường dẫn thực thi khớp với một trong các biểu thức chính quy đưa vào
biểu thức và không khớp với bất kỳ biểu thức loại trừ nào sẽ được tạo
với các tuỳ chọn đã cho. Tính năng so khớp nhãn sử dụng mẫu nhãn chính tắc
(ví dụ: //package
:label_name
).
Đường dẫn thực thi là đường dẫn tương đối đến thư mục không gian làm việc của bạn, bao gồm cả tên cơ sở (bao gồm đuôi tệp) của tệp C++. Số liệu này cũng bao gồm mọi tiền tố phụ thuộc vào nền tảng.
Để khớp với các tệp đã tạo (chẳng hạn như kết quả của quy tắc gen)
Bazel chỉ có thể sử dụng đường dẫn thực thi. Trong trường hợp này, biểu thức chính quy không nên bắt đầu bằng '//'
vì không khớp với bất kỳ đường dẫn thực thi nào. Bạn có thể sử dụng tên gói như sau:
--per_file_copt=base/.*\.pb\.cc@-g0
. Tên này sẽ khớp với mỗi
.pb.cc
trong thư mục có tên base
.
Bạn có thể sử dụng lựa chọn này nhiều lần.
Tuỳ chọn này được áp dụng bất kể chế độ biên dịch được sử dụng là gì. Ví dụ: có thể
để biên dịch bằng --compilation_mode=opt
và biên dịch có chọn lọc một số
tệp được bật tối ưu hóa mạnh hơn hoặc khi tắt tính năng tối ưu hóa.
Caveat: Nếu một số tệp được biên dịch có chọn lọc bằng các biểu tượng gỡ lỗi, thì các ký hiệu
có thể bị xoá trong quá trình liên kết. Bạn có thể ngăn việc này bằng cách đặt
--strip=never
.
Cú pháp: [+-]regex[,[+-]regex]...@option[,option]...
Trong đó
regex
là viết tắt của một biểu thức chính quy có thể có tiền tố
+
để xác định các mẫu bao gồm và dùng -
để xác định
loại trừ mẫu. option
là viết tắt của một tuỳ chọn được truyền qua
cho trình biên dịch C++. Nếu một tuỳ chọn chứa ,
, thì tuỳ chọn đó phải được trích dẫn như vậy
\,
. Các tuỳ chọn cũng có thể chứa @
, vì chỉ có tuỳ chọn đầu tiên
@
dùng để phân tách biểu thức chính quy khỏi các tuỳ chọn.
Ví dụ:
--per_file_copt=//foo:.*\.cc,-//foo:file\.cc@-O0,-fprofile-arcs
thêm các tuỳ chọn -O0
và -fprofile-arcs
vào lệnh
dòng của trình biên dịch C++ cho tất cả tệp .cc
trong //foo/
ngoại trừ file.cc
.
--dynamic_mode=mode
Xác định xem tệp nhị phân C++ có được liên kết động, tương tác với thuộc tính linkstatic trên quy tắc bản dựng.
Chế độ:
auto
: Chuyển sang chế độ phụ thuộc vào nền tảng;default
cho linux vàoff
cho cygwin.default
: Cho phép bazel chọn có liên kết linh động hay không. Xem linkstatic để biết thêm của bạn.fully
: Liên kết tất cả mục tiêu một cách linh động. Thao tác này sẽ đẩy nhanh thời gian liên kết và giảm kích thước của tệp nhị phân thu được.off
: Liên kết tất cả các mục tiêu trong chủ yếu là tĩnh. Nếu bạn đặt-static
trong liên kết, thì các mục tiêu sẽ thay đổi thành hoàn toàn tĩnh.
--fission (yes|no|[dbg][,opt][,fastbuild])
Bật Fission, ghi thông tin gỡ lỗi C++ vào các tệp .dwo chuyên dụng thay vì các tệp .o như ở vị trí mà nó sẽ nếu không thì hãy đi. Điều này giúp giảm đáng kể kích thước đầu vào cho các đường liên kết và có thể giảm thời gian liên kết.
Khi đặt thành [dbg][,opt][,fastbuild]
(ví dụ:
--fission=dbg,fastbuild
), tính năng phân hạch đã được bật
chỉ dành cho nhóm chế độ biên dịch được chỉ định. Thông tin này hữu ích cho bazelrc
phần cài đặt. Khi bạn đặt thành yes
, tính năng Phân hạch sẽ bật
trên toàn cầu. Khi bạn đặt thành no
, tính năng Phân hạch sẽ bị tắt
trên toàn cầu. Mặc định là no
.
--force_ignore_dash_static
Nếu cờ này được đặt, mọi tùy chọn -static
trong liên kết của
cc_*
quy tắc BUILD tệp sẽ bị bỏ qua. Đây chỉ là
để tăng cường bảo mật cho C++.
--[no]force_pic
Nếu được bật, tất cả quá trình biên dịch C++ sẽ tạo ra mã độc lập với vị trí ("-fPIC"), đường liên kết thích thư viện dựng sẵn PIC hơn là thư viện không phải PIC, còn đường liên kết thích tạo thư viện các tệp thực thi độc lập vị trí ("-pie"). Mặc định là vô hiệu hoá.
--android_resource_shrinking
Chọn xem có thực hiện rút gọn tài nguyên cho quy tắc android_binary hay không. Đặt giá trị mặc định cho thuộc tính shrink_resources bật các quy_tắc_nhị_android; hãy xem tài liệu về quy tắc đó để biết thêm chi tiết. Giá trị mặc định là tắt.
--custom_malloc=malloc-library-target
Khi được chỉ định, luôn sử dụng cách triển khai Malloc đã cho, ghi đè tất cả
malloc="target"
, bao gồm cả các mục tiêu sử dụng
mặc định (bằng cách không chỉ định bất kỳ malloc
nào).
--crosstool_top=label
Tuỳ chọn này chỉ định vị trí của bộ trình biên dịch crosstool
được sử dụng cho tất cả quá trình biên dịch C++ trong quá trình tạo bản dựng. Bazel sẽ xem trong đó
cho một tệp CROSSTOOL và sử dụng tệp đó để tự động xác định
cho --compiler
.
--host_crosstool_top=label
Nếu không được chỉ định, Bazel sẽ sử dụng giá trị của --crosstool_top
để biên dịch
mã trong cấu hình máy chủ lưu trữ, chẳng hạn như các công cụ chạy trong quá trình tạo bản dựng. Mục đích chính của cờ này
là bật tính năng biên dịch chéo.
--apple_crosstool_top=label
Công cụ chéo dùng để biên dịch các quy tắc C/C++ trong deps
bắc cầu của
objc*, ios* và apple*. Đối với các mục tiêu đó, cờ này sẽ ghi đè
--crosstool_top
.
--android_crosstool_top=label
Công cụ chéo dùng để biên dịch các quy tắc C/C++ trong deps
bắc cầu của
android_binary
quy tắc. Điều này rất hữu ích nếu các mục tiêu khác trong
bản dựng cần một công cụ chéo khác. Mặc định là sử dụng công cụ chéo
được tạo bằng quy tắc android_ndk_repository
trong tệp WORKSPACE.
Xem thêm --fat_apk_cpu
.
--compiler=version
Tuỳ chọn này chỉ định phiên bản trình biên dịch C/C++ (chẳng hạn như gcc-4.1.0
)
được sử dụng để biên dịch tệp nhị phân trong quá trình tạo bản dựng. Nếu bạn muốn
tạo bằng công cụ chéo tuỳ chỉnh, bạn nên sử dụng tệp CROSSTOOL thay vì
chỉ định cờ này.
--android_sdk=label
Tuỳ chọn này chỉ định chuỗi công cụ nền tảng/SDK Android và thư viện Android Runtime sẽ được dùng để tạo bất kỳ .
SDK Android sẽ tự động được chọn nếu android_sdk_repository
được xác định trong tệp WORKSPACE.
--java_toolchain=label
Tuỳ chọn này chỉ định nhãn của java_toolchain dùng để biên dịch Java tệp nguồn.
--host_java_toolchain=label
Nếu không được chỉ định, bazel sẽ sử dụng giá trị của --java_toolchain
để biên dịch
mã trong cấu hình máy chủ lưu trữ, chẳng hạn như đối với các công cụ chạy trong quá trình tạo bản dựng. Mục đích chính của cờ này
là bật tính năng biên dịch chéo.
--javabase=(label)
Tuỳ chọn này sẽ đặt nhãn của bản cài đặt Java cơ sở để dùng cho chạy bazel,
thử nghiệm bazel và dành cho các tệp nhị phân Java do java_binary
và
java_test
quy tắc. JAVABASE
và JAVA
"Nhãn hiệu" biến đều được lấy từ tuỳ chọn này.
--host_javabase=label
Tuỳ chọn này đặt nhãn của bản cài đặt Java cơ sở để dùng trong cấu hình máy chủ lưu trữ, ví dụ như các công cụ tạo máy chủ lưu trữ bao gồm JavaBuilder và Singlejar.
Thao tác này không chọn trình biên dịch Java dùng để biên dịch Java
tệp nguồn. Bạn có thể chọn trình biên dịch theo các chế độ cài đặt
--java_toolchain
.
Chiến lược thực thi
Các tuỳ chọn này ảnh hưởng đến cách Bazel thực thi bản dựng. Các lớp này sẽ không gây ảnh hưởng đáng kể đến các tệp đầu ra do bản dựng tạo ra. Thông thường, tác động chính của chúng là đối với tốc độ của bản dựng.
--spawn_strategy=strategy
Tuỳ chọn này kiểm soát địa điểm và cách thức thực thi các lệnh.
standalone
khiến các lệnh được thực thi dưới dạng quy trình phụ cục bộ. Giá trị này là không dùng nữa. Thay vào đó, hãy sử dụnglocal
.sandboxed
khiến các lệnh được thực thi bên trong hộp cát trên máy cục bộ. Để làm được như vậy, tất cả các tệp đầu vào, phần phụ thuộc của dữ liệu và công cụ đều phải được liệt kê là trong các thuộc tínhsrcs
,data
vàtools
. Bazel bật hộp cát cục bộ theo mặc định trên các hệ thống hỗ trợ thực thi hộp cát.local
khiến các lệnh được thực thi dưới dạng quy trình phụ cục bộ.worker
khiến các lệnh được thực thi bằng một worker liên tục (nếu có).docker
khiến các lệnh được thực thi bên trong hộp cát Docker trên máy cục bộ. Bạn phải cài đặt Docker.remote
khiến các lệnh được thực thi từ xa; Điều này chỉ khả dụng nếu bộ thực thi từ xa đã được định cấu hình riêng biệt.
--strategy mnemonic=strategy
Lựa chọn này kiểm soát địa điểm và cách thức thực thi các lệnh, ghi đè phương thức --spawn_strategy (và --genrule_strategy có ghi nhớ quy tắc chung) trên cơ sở từng ghi nhớ. Xem --spawn_strategy cho mã được hỗ trợ các chiến lược và tác động của chúng.
--strategy_regexp=<filter,filter,...>=<strategy>
Lựa chọn này chỉ định chiến lược nào sẽ được dùng để thực thi các lệnh có nội dung mô tả
khớp với một regex_filter
nhất định. Xem
--per_file_copt để biết thông tin chi tiết về
khớp regex_filter. Xem
--spawn_strategy cho mã được hỗ trợ
các chiến lược và tác động của chúng.
regex_filter
cuối cùng khớp với nội dung mô tả sẽ được sử dụng. Lựa chọn này sẽ ghi đè
các cờ khác để chỉ định chiến lược.
- Ví dụ:
--strategy_regexp=//foo.*\\.cc,-//foo/bar=local
có nghĩa là chạy các hành động sử dụnglocal
nếu nội dung mô tả của biểu mẫu này khớp với //foo.*.cc nhưng không khớp với //foo/bar. - Ví dụ:
--strategy_regexp='Compiling.*/bar=local' --strategy_regexp=Compiling=sandboxed
chạy 'Biên dịch //foo/bar/baz' với chiến lượcsandboxed
, nhưng đảo ngược thứ tự sẽ chạy hàm đó bằnglocal
. - Ví dụ:
--strategy_regexp='Compiling.*/bar=local,sandboxed'
chạy 'Biên dịch //foo/bar/baz' với chiến lượclocal
và quay lại dùngsandboxed
nếu không thành công.
--genrule_strategy=strategy
Đây là cách viết tắt không dùng nữa cho --strategy=Genrule=strategy
.
--jobs=n
(-j)
Lựa chọn này (lấy đối số số nguyên) và chỉ định giới hạn về số lượng công việc cần được thực thi đồng thời trong giai đoạn thực thi của bản dựng.
--progress_report_interval=n
Bazel định kỳ in báo cáo tiến độ về các công việc chưa
đã hoàn tất (chẳng hạn như các thử nghiệm chạy trong thời gian dài). Tùy chọn này sẽ đặt
tần suất báo cáo, tiến trình sẽ được in mỗi n
giây.
Giá trị mặc định là 0, có nghĩa là thuật toán gia tăng: thuật toán đầu tiên báo cáo sẽ được in sau 10 giây, sau đó là 30 giây và tiến trình đó được báo cáo mỗi phút một lần.
Khi bazel đang sử dụng điều khiển con trỏ, như được chỉ định bởi
--curses
, tiến trình được báo cáo mỗi giây.
--local_{ram,cpu}_resources resources or resource expression
Những tuỳ chọn này chỉ định dung lượng tài nguyên cục bộ (RAM tính bằng MB và số lõi logic của CPU)
mà Bazel có thể cân nhắc khi lên lịch các hoạt động xây dựng và kiểm thử để chạy cục bộ. Họ mất
một số nguyên hoặc một từ khoá (HOST_RAM hoặc HOST_CPUS) (không bắt buộc) theo sau là [-|*
float]
(ví dụ: --local_cpu_resources=2
, --local_ram_resources=HOST_RAM*.5
,
--local_cpu_resources=HOST_CPUS-1
).
Các cờ này là độc lập; có thể đặt một hoặc cả hai. Theo mặc định, Bazel ước tính
dung lượng RAM và số lõi CPU trực tiếp từ cấu hình của hệ thống cục bộ.
--[no]build_runfile_links
Tuỳ chọn này (được bật theo mặc định) sẽ chỉ định liệu các tệp chạy
đường liên kết tượng trưng cho chương trình kiểm thử và tệp nhị phân nên được tạo trong thư mục đầu ra.
Việc sử dụng --nobuild_runfile_links
có thể hữu ích
để xác thực xem tất cả các mục tiêu có biên dịch hay không làm phát sinh chi phí
để xây dựng cây runfile.
Khi thực thi các chương trình kiểm thử (hoặc ứng dụng), dữ liệu thời gian chạy của các chương trình này
các phần phụ thuộc được tập hợp ở cùng một nơi. Trong khuôn viên của Bazel
cây đầu ra, "runfiles" này cây thường có gốc là anh em của
tệp nhị phân hoặc kiểm thử tương ứng.
Trong quá trình chạy kiểm thử, bạn có thể truy cập vào các tệp chạy bằng đường dẫn của biểu mẫu
$TEST_SRCDIR/workspace/packagename/filename
.
Cây runfile đảm bảo rằng các chương trình kiểm thử có quyền truy cập vào tất cả tệp
dựa vào đó chúng đã khai báo sự phụ thuộc và không gì khác. Theo
theo mặc định, cây runfile được triển khai bằng cách tạo một tập hợp
liên kết tượng trưng đến các tệp được yêu cầu. Khi tập hợp các đường liên kết tăng lên,
thực hiện chi phí của hoạt động này và đối với một số công trình lớn, nó có thể
đóng góp đáng kể vào tổng thời gian xây dựng, đặc biệt là
mỗi kiểm thử (hoặc ứng dụng) riêng lẻ yêu cầu cây chạy tệp riêng.
--[no]build_runfile_manifests
Tuỳ chọn này (được bật theo mặc định) sẽ chỉ định xem có tệp kê khai các tệp runfile hay không
cần được ghi vào cây đầu ra.
Khi tắt, thao tác này sẽ ngụ ý --nobuild_runfile_links
.
Bạn có thể tắt tính năng này khi thực thi kiểm thử từ xa, vì cây chạy tệp sẽ được tạo từ xa từ tệp kê khai trong bộ nhớ.
--[no]discard_analysis_cache
Khi bật tuỳ chọn này, Bazel sẽ loại bỏ bộ nhớ đệm phân tích ngay trước khi quá trình thực thi bắt đầu, do đó giải phóng thêm bộ nhớ (khoảng 10%) cho giai đoạn thực thi. Nhược điểm là các bản dựng tăng dần sẽ chậm hơn. Xem thêm chế độ tiết kiệm bộ nhớ.
--[no]keep_going
(-k)
Như trong GNU Make, giai đoạn thực thi của một bản dựng sẽ dừng khi đã gặp phải lỗi. Đôi khi, bạn nên thử tạo nhiều nhất có thể, ngay cả khi xảy ra lỗi. Tùy chọn này cho phép hành vi đó và khi được chỉ định, bản dựng sẽ cố gắng tạo mọi mục tiêu có điều kiện tiên quyết đã được tạo thành công, nhưng sẽ bỏ qua lỗi.
Mặc dù tuỳ chọn này thường gắn liền với giai đoạn thực thi của
thì bản dựng cũng ảnh hưởng đến giai đoạn phân tích: nếu một vài mục tiêu
được chỉ định trong lệnh tạo, nhưng chỉ một số lệnh có thể được
đã phân tích thành công, bản dựng sẽ dừng kèm theo lỗi
trừ khi --keep_going
được chỉ định. Trong trường hợp đó, giá trị
sẽ chuyển sang giai đoạn thực thi nhưng chỉ đối với các mục tiêu
đã được phân tích thành công.
--[no]use_ijars
Tuỳ chọn này thay đổi cách java_library
nhắm mục tiêu
do Bazel biên soạn. Thay vì sử dụng kết quả của một
java_library
để biên dịch phần phụ thuộc
java_library
nhắm mục tiêu, Bazel sẽ tạo các ngăn giao diện
chỉ chứa chữ ký của các thành viên không phải công khai (công khai,
các trường và phương thức truy cập được bảo vệ và mặc định (gói)) và sử dụng
các jar giao diện để biên dịch các mục tiêu phụ thuộc. Điều này giúp
có thể tránh biên dịch lại khi các thay đổi chỉ được thực hiện cho
nội dung phương thức hoặc thành phần riêng tư của một lớp.
--[no]interface_shared_objects
Tùy chọn này bật đối tượng dùng chung giao diện, tạo tệp nhị phân và các thư viện dùng chung khác phụ thuộc vào giao diện của một đối tượng dùng chung, thay vì triển khai. Khi chỉ có việc triển khai thay đổi, Bazel có thể tránh tạo lại các mục tiêu phụ thuộc vào thư viện dùng chung đã thay đổi không cần thiết.
Lựa chọn đầu ra
Các tuỳ chọn này xác định nội dung cần tạo hoặc kiểm thử.
--[no]build
Tuỳ chọn này xảy ra giai đoạn thực thi của bản dựng; đó là bật theo mặc định. Khi tính năng này bị tắt, giai đoạn thực thi là đã bỏ qua mà chỉ diễn ra hai giai đoạn đầu tiên (tải và phân tích).
Tuỳ chọn này có thể hữu ích trong việc xác thực tệp BUILD và phát hiện lỗi trong đầu vào mà không thực sự tạo dựng bất cứ thứ gì.
--[no]build_tests_only
Nếu được chỉ định, Bazel sẽ chỉ tạo những gì cần thiết để chạy *_test
và test_suite
quy tắc không được lọc do
kích thước,
thời gian chờ,
thẻ hoặc
ngôn ngữ.
Nếu được chỉ định, Bazel sẽ bỏ qua các mục tiêu khác được chỉ định trên dòng lệnh.
Theo mặc định, tuỳ chọn này bị tắt và Bazel sẽ tạo mọi thứ
đã yêu cầu, bao gồm *_test
và test_suite
quy tắc được lọc ra từ
kiểm thử. Điều này hữu ích vì chạy
bazel test --build_tests_only foo/...
có thể không phát hiện được tất cả bản dựng
sự cố hỏng trong cây foo
.
--[no]check_up_to_date
Tuỳ chọn này khiến Bazel không thực hiện một bản dựng mà chỉ kiểm tra xem tất cả các mục tiêu được chỉ định đã được cập nhật hay chưa. Nếu có, bản dựng hoàn tất thành công như thường lệ. Tuy nhiên, nếu có bất kỳ tệp nào nằm ngoài ngày, thay vì được tạo, một lỗi sẽ được báo cáo và bản dựng không thành công. Tuỳ chọn này có thể hữu ích để xác định xem một bản dựng có được thực hiện gần đây hơn so với chỉnh sửa nguồn (ví dụ: đối với lượt gửi trước kiểm tra) mà không làm phát sinh chi phí bản dựng.
Xem thêm --check_tests_up_to_date
.
--[no]compile_one_dependency
Biên dịch một phần phụ thuộc của các tệp đối số. Thông tin này hữu ích cho tệp nguồn kiểm tra cú pháp trong IDE, ví dụ: bằng cách tạo lại một mục tiêu phụ thuộc vào tệp nguồn nhằm phát hiện lỗi sớm nhất là có thể thực hiện trong chu trình chỉnh sửa/xây dựng/kiểm thử. Đối số này ảnh hưởng đến cách tất cả đối số không có cờ được diễn giải: mỗi đối số phải là một nhãn đích của tệp hoặc tên tệp thuần tuý tương ứng với công việc hiện tại và một quy tắc phụ thuộc vào từng tên tệp nguồn được tạo. Cho
C++ và Java các nguồn dữ liệu, các quy tắc trong cùng một không gian ngôn ngữ sẽ được ưu tiên chọn. Để nhiều quy tắc có cùng tùy chọn, quy tắc sẽ xuất hiện đầu tiên trong mục Tệp BUILD được chọn. Mẫu mục tiêu được đặt tên rõ ràng không tham chiếu đến tệp nguồn dẫn đến lỗi.
--save_temps
Tuỳ chọn --save_temps
khiến kết quả tạm thời từ trình biên dịch trở thành
đã lưu. Các tệp này bao gồm các tệp .s (mã của trình kết hợp), .i (đã xử lý trước C) và .ii
(đã xử lý trước C++). Những dữ liệu đầu ra này thường hữu ích khi gỡ lỗi. Nhiệt độ sẽ chỉ là
được tạo cho tập hợp các mục tiêu được chỉ định trên dòng lệnh.
Cờ --save_temps
hiện chỉ hoạt động cho các quy tắc cc_*.
Để đảm bảo rằng Bazel in vị trí của các tệp đầu ra bổ sung, hãy kiểm tra để đảm bảo
--show_result n
của bạn
cài đặt đủ cao.
--build_tag_filters=tag[,tag]*
Nếu được chỉ định, Bazel sẽ chỉ tạo các mục tiêu có ít nhất một thẻ bắt buộc (nếu có bất kỳ thẻ nào trong số đó được chỉ định) và không có thẻ bị loại trừ nào. Thẻ xây dựng được chỉ định dưới dạng danh sách từ khóa thẻ được phân tách bằng dấu phẩy, tùy chọn đứng sau '-' ký hiệu này dùng để biểu thị các thẻ bị loại trừ. Các thẻ bắt buộc cũng có thể có dấu '+' ở trước .
Khi chạy kiểm thử, Bazel bỏ qua --build_tag_filters
đối với các mục tiêu kiểm thử,
được tạo và chạy ngay cả khi chúng không phù hợp với bộ lọc này. Để tránh tạo các quảng cáo đó, hãy lọc
thử nghiệm các mục tiêu bằng cách sử dụng --test_tag_filters
hoặc bằng cách loại trừ các mục tiêu đó một cách rõ ràng.
--test_size_filters=size[,size]*
Nếu được chỉ định, Bazel sẽ kiểm thử (hoặc tạo nếu --build_tests_only
cũng được chỉ định) chỉ các mục tiêu thử nghiệm với kích thước đã cho. Kiểm tra bộ lọc kích thước
được chỉ định dưới dạng danh sách các giá trị kích thước thử nghiệm được phép phân tách bằng dấu phẩy (nhỏ,
trung bình, lớn hoặc rất lớn), tuỳ ý đứng sau "-" dấu dùng để biểu thị
kích thước thử nghiệm bị loại trừ. Ví dụ:
% bazel test --test_size_filters=small,medium //foo:all
và
% bazel test --test_size_filters=-large,-enormous //foo:all
sẽ chỉ kiểm thử các chương trình kiểm thử nhỏ và trung bình bên trong //foo.
Theo mặc định, tính năng lọc kích thước thử nghiệm không được áp dụng.
--test_timeout_filters=timeout[,timeout]*
Nếu được chỉ định, Bazel sẽ kiểm thử (hoặc tạo nếu --build_tests_only
cũng được chỉ định) chỉ thử nghiệm các mục tiêu với thời gian chờ nhất định. Bộ lọc hết thời gian thử nghiệm
được chỉ định dưới dạng danh sách các giá trị thời gian chờ kiểm tra được phép được phân tách bằng dấu phẩy (ví dụ:
trung bình, dài hoặc vĩnh viễn), tuỳ ý đứng sau "-" dấu dùng để biểu thị
thời gian chờ thử nghiệm bị loại trừ. Hãy xem --test_size_filters
ví dụ về cú pháp.
Theo mặc định, tính năng lọc hết thời gian thử nghiệm sẽ không được áp dụng.
--test_tag_filters=tag[,tag]*
Nếu được chỉ định, Bazel sẽ kiểm thử (hoặc tạo nếu --build_tests_only
cũng được chỉ định) chỉ những mục tiêu thử nghiệm có ít nhất một thẻ bắt buộc
(nếu có bất kỳ thẻ nào trong số đó được chỉ định) và không có thẻ bị loại trừ nào. Thẻ thử nghiệm
được chỉ định dưới dạng danh sách từ khóa thẻ được phân tách bằng dấu phẩy, tùy chọn
đứng sau '-' ký hiệu này dùng để biểu thị các thẻ bị loại trừ. Các thẻ bắt buộc cũng có thể
có dấu '+' ở trước .
Ví dụ:
% bazel test --test_tag_filters=performance,stress,-flaky //myproject:all
sẽ thử nghiệm các mục tiêu được gắn thẻ bằng performance
hoặc
stress
nhưng không được gắn thẻ bằng thẻ flaky
.
Theo mặc định, tính năng lọc thẻ thử nghiệm không được áp dụng. Xin lưu ý rằng bạn cũng có thể lọc
trên các thẻ size
và local
của thử nghiệm trong
theo cách này.
--test_lang_filters=lang[,lang]*
Chỉ định danh sách ngôn ngữ thử nghiệm được phân tách bằng dấu phẩy cho những ngôn ngữ có quy tắc *_test
chính thức mà
(xem bản dựng bách khoa toàn thư để biết danh sách đầy đủ các chế độ này). Một
ngôn ngữ có thể tùy chọn đứng sau "-" để chỉ định loại trừ
ngôn ngữ. Tên sử dụng cho mỗi ngôn ngữ phải giống như
tiền tố ngôn ngữ trong quy tắc *_test
, ví dụ:
cc
, java
hoặc sh
.
Nếu được chỉ định, Bazel sẽ kiểm thử (hoặc tạo nếu --build_tests_only
cũng được chỉ định) chỉ các mục tiêu thử nghiệm của(các) ngôn ngữ được chỉ định.
Ví dụ:
% bazel test --test_lang_filters=cc,java foo/...
sẽ chỉ kiểm thử các kiểm thử C/C++ và Java (được xác định bằng cách sử dụng
cc_test
và java_test
quy tắc tương ứng)
trong foo/...
, trong khi
% bazel test --test_lang_filters=-sh,-java foo/...
sẽ chạy tất cả các bài kiểm thử trong foo/...
, ngoại trừ
Thử nghiệm sh_test
và java_test
.
Theo mặc định, tính năng lọc ngôn ngữ thử nghiệm không được áp dụng.
--test_filter=filter-expression
Chỉ định một bộ lọc mà trình chạy kiểm thử có thể sử dụng để chọn một tập hợp con các bài kiểm thử đang chạy. Tất cả các mục tiêu được chỉ định trong lệnh gọi đều được tạo, nhưng phụ thuộc vào biểu thức chỉ có thể được thực thi; trong một số trường hợp, chỉ một số chạy các phương thức kiểm thử nào.
Cách diễn giải cụ thể của filter-expression lên đến
khung kiểm thử chịu trách nhiệm chạy kiểm thử. Đó có thể là một khối cầu,
chuỗi con hoặc regexp. --test_filter
là một lựa chọn tiện lợi
chuyển các đối số bộ lọc --test_arg
khác nhau,
nhưng không phải khung tiêu chí nào cũng hỗ trợ.
Độ chi tiết
Các tuỳ chọn này kiểm soát độ chi tiết cho đầu ra của Bazel, vào thiết bị đầu cuối hoặc vào tệp nhật ký bổ sung.
--explain=logfile
Tuỳ chọn này đòi hỏi phải có đối số tên tệp, khiến
trình kiểm tra phần phụ thuộc trong giai đoạn thực thi của bazel build
để
giải thích lý do thực thi cho mỗi bước tạo bản dựng, hoặc
đó là thông tin mới nhất. Đã có lời giải thích
vào logfile.
Nếu bạn gặp phải tình huống tạo lại không mong muốn, lựa chọn này có thể giúp
hiểu lý do. Thêm hồ sơ vào .bazelrc
để
Quá trình ghi nhật ký diễn ra cho tất cả các bản dựng tiếp theo, sau đó kiểm tra nhật ký
khi bạn thấy một bước thực thi được thực thi ngoài dự kiến. Lựa chọn này
có thể ảnh hưởng không đáng kể đến hiệu suất, nên bạn có thể muốn xoá
khi không còn cần đến.
--verbose_explanations
Lựa chọn này giúp tăng độ chi tiết của nội dung giải thích được tạo khi bật lựa chọn --explain.
Cụ thể, nếu bạn bật tính năng giải thích chi tiết, và một tệp đầu ra được tạo lại vì lệnh dùng để thì kết quả trong tệp giải thích sẽ thay đổi bao gồm toàn bộ thông tin chi tiết của lệnh mới (ít nhất là đối với hầu hết ).
Việc sử dụng tuỳ chọn này có thể làm tăng đáng kể thời lượng của
tệp giải thích được tạo ra và hiệu suất nhận được khi sử dụng
--explain
.
Nếu bạn chưa bật --explain
, thì
--verbose_explanations
không có hiệu lực.
--profile=file
Tuỳ chọn này lấy đối số tên tệp, khiến Bazel ghi
lập hồ sơ dữ liệu vào một tệp. Sau đó, dữ liệu này có thể được phân tích hoặc phân tích cú pháp bằng cách sử dụng
Lệnh bazel analyze-profile
. Hồ sơ bản dựng có thể hữu ích trong
nắm được lệnh build
của Bazel đang dành thời gian ở đâu.
--[no]show_loading_progress
Tuỳ chọn này khiến Bazel xuất ra tiến trình tải gói tin nhắn. Nếu chế độ cài đặt này bị tắt, các thông báo sẽ không hiển thị.
--[no]show_progress
Tuỳ chọn này sẽ hiển thị các thông báo về tiến trình; nó được bật bởi mặc định. Khi bạn tắt, thông báo tiến trình sẽ bị chặn.
--show_progress_rate_limit=n
Tuỳ chọn này khiến bazel hiển thị tối đa một thông báo về tiến trình mỗi n
giây,
với n là một số thực.
Giá trị mặc định cho tuỳ chọn này là 0,02, nghĩa là bazel sẽ giới hạn tiến trình
tin nhắn thành một tin nhắn mỗi 0,02 giây.
--show_result=n
Tuỳ chọn này kiểm soát việc in thông tin kết quả ở cuối
của lệnh bazel build
. Theo mặc định, nếu một
mục tiêu bản dựng đã được chỉ định, Bazel in một thông báo cho biết liệu
hay không thì mục tiêu đã được cập nhật thành công và nếu có,
danh sách các tệp đầu ra mà mục tiêu đã tạo. Nếu có nhiều
mục tiêu đã được chỉ định, thì thông tin kết quả sẽ không được hiển thị.
Mặc dù thông tin kết quả có thể hữu ích cho các bản dựng của một
hoặc một vài mục tiêu cho các bản dựng lớn (chẳng hạn như toàn bộ một cấp cao nhất
cây dự án), thông tin này có thể gây choáng ngợp và mất tập trung;
tuỳ chọn này cho phép bạn kiểm soát nó. --show_result
lấy một đối số số nguyên, là số mục tiêu tối đa
cần in thông tin kết quả đầy đủ. Theo mặc định,
giá trị là 1. Không có thông tin kết quả nào vượt quá ngưỡng này
hiển thị cho các mục tiêu riêng lẻ. Do đó, số không dẫn đến kết quả
thông tin luôn bị chặn, và do đó,
giá trị rất lớn
kết quả luôn được in.
Người dùng có thể muốn chọn một giá trị ở giữa nếu họ thường xuyên
xen kẽ giữa việc xây dựng một nhóm nhỏ các mục tiêu (ví dụ:
trong chu trình biên dịch-chỉnh sửa-kiểm thử) và một nhóm lớn các mục tiêu
(ví dụ: khi thiết lập không gian làm việc mới hoặc chạy
hồi quy). Trong trường hợp trước, thông tin kết quả sẽ là
rất hữu ích, nhưng đối với trường hợp sau thì lại ít hữu ích hơn. Giống như tất cả
, điều này có thể được chỉ định ngầm qua
tệp .bazelrc
.
Các tệp được in để bạn dễ dàng sao chép và dán tên tệp vào shell, để chạy các tệp thực thi được tạo. Số liệu "cập nhật" hoặc "không thành công" nên có thể dễ dàng phân tích cú pháp thông báo cho từng mục tiêu bằng tập lệnh để thúc đẩy một bản dựng.
--sandbox_debug
Tuỳ chọn này khiến Bazel in thêm thông tin gỡ lỗi khi sử dụng hộp cát cho thao tác thực thi chính sách. Tuỳ chọn này cũng giữ lại các thư mục hộp cát để các tệp có thể nhìn thấy được trong quá trình thực thi.
--subcommands
(-s
)
Tuỳ chọn này khiến giai đoạn thực thi của Bazel in toàn bộ dòng lệnh cho mỗi lệnh trước khi thực thi.
>>>>> # //examples/cpp:hello-world [action 'Linking examples/cpp/hello-world'] (cd /home/johndoe/.cache/bazel/_bazel_johndoe/4c084335afceb392cfbe7c31afee3a9f/bazel && \ exec env - \ /usr/bin/gcc -o bazel-out/local-fastbuild/bin/examples/cpp/hello-world -B/usr/bin/ -Wl,-z,relro,-z,now -no-canonical-prefixes -pass-exit-codes -Wl,-S -Wl,@bazel-out/local_linux-fastbuild/bin/examples/cpp/hello-world-2.params)
Nếu có thể, các lệnh sẽ được in theo cú pháp tương thích với shell Bourne,
để bạn có thể dễ dàng sao chép và dán chúng vào dấu nhắc lệnh shell.
(Các dấu ngoặc đơn xung quanh được cung cấp để bảo vệ shell của bạn khỏi
Cuộc gọi cd
và exec
; nhớ sao chép chúng!)
Tuy nhiên, một số lệnh được triển khai nội bộ trong Bazel, chẳng hạn như
tạo cây liên kết tượng trưng. Không có dòng lệnh nào để hiển thị đối với những trường hợp này.
Có thể chuyển --subcommands=pretty_print
để in
các đối số của lệnh ở dạng danh sách thay vì dưới dạng một dòng. Việc này có thể
giúp các dòng lệnh dài dễ đọc hơn.
Hãy xem thêm --verbose_failures bên dưới.
Để ghi nhật ký các lệnh con vào một tệp ở định dạng phù hợp với công cụ, hãy xem --execution_log_json_file và --execution_log_binary_file.
--verbose_failures
Tuỳ chọn này khiến giai đoạn thực thi của Bazel in toàn bộ dòng lệnh cho các lệnh không thực hiện được thao tác. Dữ liệu này có thể rất hữu ích để gỡ lỗi bản dựng không thành công.
Các lệnh không đạt được in theo cú pháp tương thích với shell Bourne, phù hợp để sao chép và dán vào dấu nhắc lệnh shell.
Trạng thái Workspace
Sử dụng các tuỳ chọn này để "đóng dấu" Các tệp nhị phân do Bazel tạo: để nhúng thông tin bổ sung vào
tệp nhị phân, chẳng hạn như bản sửa đổi chế độ kiểm soát nguồn hoặc thông tin khác liên quan đến không gian làm việc. Bạn có thể sử dụng
cơ chế này với các quy tắc hỗ trợ thuộc tính stamp
, chẳng hạn như
genrule
, cc_binary
và các lý do khác.
--workspace_status_command=program
Cờ này cho phép bạn chỉ định tệp nhị phân mà Bazel chạy trước mỗi bản dựng. Chương trình này có thể báo cáo thông tin về trạng thái của không gian làm việc, chẳng hạn như bản sửa đổi chế độ kiểm soát nguồn hiện tại.
Giá trị của cờ phải là một đường dẫn đến một chương trình gốc. Trên Linux/macOS, đây có thể là bất kỳ tệp thực thi nào. Trên Windows, tệp này phải là tệp nhị phân gốc, thường là ".exe", ".bat" hoặc ".cmd" .
Chương trình sẽ in không hoặc nhiều cặp khoá/giá trị tới đầu ra chuẩn, một mục nhập trên mỗi dòng, sau đó thoát bằng 0 (nếu không, bản dựng sẽ không thành công). Tên khoá có thể là bất kỳ tên nào, nhưng chỉ sử dụng chữ hoa và dấu gạch dưới. Dấu cách đầu tiên sau tên khoá phân tách khoá với giá trị. Giá trị là phần còn lại của dòng (bao gồm cả khoảng trắng bổ sung). Không phải khoá cũng không giá trị có thể nằm trên nhiều dòng. Các khoá không được trùng lặp.
Bazel phân vùng các khoá thành hai nhóm: "ổn định" và "biến động". (Tên "chính thức" và "tự tính toán lại" hơi phản trực quan, vì vậy, đừng nghĩ nhiều về chúng.)
Sau đó, Bazel ghi các cặp khoá-giá trị thành 2 tệp:
bazel-out/stable-status.txt
chứa mọi khoá và giá trị mà tên khoá bắt đầu bằngSTABLE_
bazel-out/volatile-status.txt
chứa các khoá còn lại và giá trị của chúng
Hợp đồng này là:
"chính thức" khoá nên ít khi thay đổi, nếu có thể. Nếu nội dung của
bazel-out/stable-status.txt
thì Bazel vô hiệu hoá những hành động phụ thuộc vào chúng. Trong nói cách khác, nếu giá trị của khoá ổn định thay đổi, Bazel sẽ chạy lại các hành động được đóng dấu. Do đó, trạng thái ổn định không được chứa những nội dung như dấu thời gian, vì chúng thay đổi tất cả và sẽ khiến Bazel chạy lại các hành động được đóng dấu với mỗi bản dựng.Bazel luôn xuất ra các khoá ổn định sau đây:
BUILD_EMBED_LABEL
: giá trị của--embed_label
BUILD_HOST
: tên của máy chủ lưu trữ mà Bazel đang chạyBUILD_USER
: tên người dùng mà Bazel đang sử dụng
"tự tính toán lại" khoá các giá trị có thể thay đổi thường xuyên. Bazel mong muốn họ luôn thay đổi, chẳng hạn như và cập nhật hợp lệ
bazel-out/volatile-status.txt
. Để tránh nhưng luôn chạy lại các hành động được đóng dấu, Bazel giả vờ rằng tệp biến động không bao giờ thay đổi. Nói cách khác, nếu tệp trạng thái biến động là tệp duy nhất có nội dung đã thay đổi, thì Bazel sẽ không vô hiệu hoá những hành động phụ thuộc vào điều đó. Nếu thông tin đầu vào khác của hành động đã thay đổi, thì Bazel sẽ chạy lại thao tác đó và thao tác sẽ thấy biến động được cập nhật trạng thái biến động, nhưng việc chỉ thay đổi trạng thái biến động sẽ không vô hiệu hoá hành động.Bazel luôn xuất ra các khoá tự tính toán lại sau đây:
BUILD_TIMESTAMP
: thời gian tạo bản dựng tính bằng giây kể từ Unix Epoch (giá trị củaSystem.currentTimeMillis()
chia cho một nghìn)
Trên Linux/macOS, bạn có thể chuyển --workspace_status_command=/bin/true
đến
vô hiệu hóa truy xuất trạng thái không gian làm việc, vì true
không thực hiện thành công (thoát)
bằng 0) và không in ra kết quả nào. Trên Windows, bạn có thể truyền đường dẫn của true.exe
của MSYS
để có được cùng một hiệu quả.
Nếu lệnh trạng thái không gian làm việc không thành công (thoát khác 0) vì bất kỳ lý do gì, bản dựng sẽ không thành công.
Chương trình mẫu trên Linux sử dụng Git:
#!/bin/bash echo "CURRENT_TIME $(date +%s)" echo "RANDOM_HASH $(cat /proc/sys/kernel/random/uuid)" echo "STABLE_GIT_COMMIT $(git rev-parse HEAD)" echo "STABLE_USER_NAME $USER"
Truyền đường dẫn của chương trình này bằng --workspace_status_command
và tệp trạng thái ổn định
sẽ bao gồm các dòng ỔN ĐỊNH và tệp trạng thái biến động sẽ bao gồm các dòng còn lại.
--[no]stamp
Lựa chọn này, cùng với thuộc tính quy tắc stamp
, kiểm soát việc
nhúng thông tin bản dựng trong tệp nhị phân.
Có thể bật hoặc tắt tính năng đóng dấu một cách rõ ràng theo từng quy tắc bằng cách sử dụng
Thuộc tính stamp
. Vui lòng tham khảo Bách khoa toàn thư về xây dựng để biết chi tiết. Thời gian
một quy tắc sẽ đặt stamp = -1
(mặc định cho các quy tắc *_binary
), tuỳ chọn này
xác định xem đã bật tính năng dán hay chưa.
Bazel không bao giờ đóng dấu các tệp nhị phân được xây dựng cho cấu hình máy chủ lưu trữ,
bất kể lựa chọn này hay thuộc tính stamp
. Đối với các quy tắc đặt stamp =
0
(mặc định cho các quy tắc *_test
), dấu sẽ bị tắt bất kể
--[no]stamp
. Việc chỉ định --stamp
sẽ không buộc tạo lại các mục tiêu nếu
các phần phụ thuộc của chúng không thay đổi.
Nhìn chung, bạn nên đặt --nostamp
để có hiệu suất bản dựng tốt hơn
giúp giảm sự biến động đầu vào và tối đa hoá việc lưu vào bộ nhớ đệm của bản dựng.
Nền tảng
Sử dụng những tuỳ chọn này để kiểm soát nền tảng lưu trữ và nền tảng đích giúp định cấu hình cách hoạt động của các bản dựng và để kiểm soát những nền tảng thực thi và chuỗi công cụ có sẵn cho quy tắc Bazel.
Vui lòng xem thông tin cơ bản về Nền tảng và Chuỗi công cụ.
--platforms=labels
Nhãn của các quy tắc nền tảng mô tả các nền tảng mục tiêu cho lệnh hiện tại.
--host_platform=label
Nhãn của một quy tắc nền tảng mô tả hệ thống lưu trữ.
--extra_execution_platforms=labels
Các nền tảng có sẵn dưới dạng nền tảng thực thi để chạy các hành động. Bạn có thể chỉ định nền tảng theo mục tiêu chính xác hoặc dưới dạng mẫu mục tiêu. Các nền tảng sẽ được xem xét trước những nền tảng được khai báo trong tệp WORKSPACE register_execution_platforms()
--extra_toolchains=labels
Các quy tắc chuỗi công cụ cần được xem xét trong quá trình phân giải chuỗi công cụ. Chuỗi công cụ có thể được chỉ định theo mục tiêu chính xác hoặc dưới dạng mẫu mục tiêu. Những chuỗi công cụ này sẽ được xem xét trước những nội dung được khai báo trong tệp WORKSPACE bằng cách register_toolchains().
--toolchain_resolution_debug=regex
In thông tin gỡ lỗi trong khi tìm chuỗi công cụ nếu loại chuỗi công cụ khớp với
biểu thức chính quy. Bạn có thể phân tách nhiều biểu thức chính quy bằng dấu phẩy. Biểu thức chính quy có thể là
bị phủ định bằng cách sử dụng -
ở đầu. Việc này có thể giúp nhà phát triển
của các quy tắc Bazel hoặc Starlark có lỗi gỡ lỗi do thiếu chuỗi công cụ.
Khác
--flag_alias=alias_name=target_path
Một cờ tiện lợi dùng để liên kết chế độ cài đặt bản dựng Starlark dài hơn với một tên ngắn hơn. Để biết thêm chi tiết, hãy xem Cấu hình Starlark.
--symlink_prefix=string
Thay đổi tiền tố của đường liên kết tượng trưng tiện lợi đã tạo. Chiến lược phát hành đĩa đơn
giá trị mặc định cho tiền tố đường liên kết tượng trưng là bazel-
sẽ tạo các liên kết tượng trưng bazel-bin
, bazel-testlogs
và
bazel-genfiles
.
Nếu không thể tạo đường liên kết tượng trưng vì bất kỳ lý do gì, thì bạn sẽ nhận được cảnh báo nhưng bản dựng vẫn được coi là thành công. Cụ thể, Thao tác này cho phép bạn tạo trong một thư mục chỉ đọc hoặc một thư mục mà bạn không có quyền ghi vào. Mọi đường dẫn được in dưới dạng thông tin thông báo vào cuối quá trình tạo bản dựng sẽ chỉ sử dụng dạng ngắn tương đối liên kết tượng trưng nếu các đường liên kết tượng trưng trỏ đến vị trí; nói cách khác, bạn có thể dựa vào mức độ chính xác của đường dẫn liên kết tượng trưng, ngay cả khi bạn không thể dựa vào các liên kết tượng trưng đang được tạo.
Một số giá trị phổ biến của lựa chọn này:
Chặn việc tạo đường liên kết tượng trưng:
--symlink_prefix=/
sẽ khiến Bazel không tạo hoặc cập nhật bất kỳ liên kết tượng trưng nào, bao gồmbazel-out
vàbazel-<workspace>
đường liên kết tượng trưng. Sử dụng chế độ này để chặn hoàn toàn việc tạo đường liên kết tượng trưng.Giảm tình trạng lộn xộn:
--symlink_prefix=.bazel/
sẽ khiến Bazel tạo đường liên kết tượng trưng có tênbin
(v.v.) trong một thư mục ẩn.bazel
.
--platform_suffix=string
Thêm một hậu tố vào tên ngắn của cấu hình, dùng để xác định thư mục đầu ra. Việc đặt tuỳ chọn này thành các giá trị khác nhau sẽ đặt tệp vào các thư mục khác nhau, ví dụ: để cải thiện tỷ lệ truy cập bộ nhớ đệm cho các bản dựng hoặc sao chép các tệp đầu ra của nhau hoặc giữ lại các tệp đầu ra để so sánh.
--default_visibility=(private|public)
Cờ tạm thời để kiểm thử các thay đổi về chế độ hiển thị mặc định của bazel. Không dành cho mục đích sử dụng chung nhưng được ghi lại để đảm bảo tính hoàn chỉnh' rượu sake.
--[no]use_action_cache
Tuỳ chọn này được bật theo mặc định. Nếu bạn tắt chính sách này, Bazel sẽ không sử dụng bộ nhớ đệm thao tác cục bộ. Việc tắt bộ nhớ đệm thao tác cục bộ sẽ giúp tiết kiệm bộ nhớ và dung lượng ổ đĩa cho các bản dựng sạch, nhưng sẽ làm chậm hơn các bản dựng tăng dần.
--starlark_cpu_profile=_file_
Cờ này (có giá trị là tên của một tệp) khiến Bazel thu thập số liệu thống kê về mức sử dụng CPU của tất cả các luồng Starlark, và viết hồ sơ, ở định dạng pprof vào tệp được đặt tên.
Sử dụng tuỳ chọn này để xác định các hàm Starlark làm cho việc tải và phân tích bị chậm do phải tính toán quá mức. Ví dụ:
$ bazel build --nobuild --starlark_cpu_profile=/tmp/pprof.gz my/project/... $ pprof /tmp/pprof.gz (pprof) top Type: CPU Time: Feb 6, 2020 at 12:06pm (PST) Duration: 5.26s, Total samples = 3.34s (63.55%) Showing nodes accounting for 3.34s, 100% of 3.34s total flat flat% sum% cum cum% 1.86s 55.69% 55.69% 1.86s 55.69% sort_source_files 1.02s 30.54% 86.23% 1.02s 30.54% expand_all_combinations 0.44s 13.17% 99.40% 0.44s 13.17% range 0.02s 0.6% 100% 3.34s 100% sorted 0 0% 100% 1.38s 41.32% my/project/main/BUILD 0 0% 100% 1.96s 58.68% my/project/library.bzl 0 0% 100% 3.34s 100% main
Đối với các chế độ xem khác nhau của cùng một dữ liệu, hãy thử các lệnh pprof
svg
,
web
và list
.
Sử dụng Bazel để phát hành
Bazel được cả các kỹ sư phần mềm sử dụng trong quá trình phát triển chu kỳ và theo kỹ sư phát hành khi chuẩn bị tệp nhị phân để triển khai sang phát hành công khai. Phần này cung cấp danh sách các mẹo phát hành ứng dụng sử dụng Bazel.
Lựa chọn quan trọng
Khi sử dụng Bazel cho các bản phát hành, các vấn đề tương tự phát sinh như các tập lệnh khác thực hiện một bản dựng. Để biết thêm thông tin, hãy xem Gọi cho Bazel từ tập lệnh. Cụ thể, các tuỳ chọn sau đây thực sự nên dùng:
Các tuỳ chọn này cũng quan trọng:
--package_path
--symlink_prefix
: để quản lý các bản dựng cho nhiều cấu hình, có thể thuận tiện để phân biệt từng công trình có mã nhận dạng riêng biệt, chẳng hạn như "64 bit" so với "32 bit". Lựa chọn này sẽ phân biệt các đường liên kết tượng trưngbazel-bin
(v.v.).
Đang chạy kiểm thử
Để tạo và chạy kiểm thử bằng bazel, hãy nhập bazel test
rồi đến
tên của mục tiêu kiểm thử.
Theo mặc định, lệnh này thực hiện đồng thời quá trình tạo và kiểm thử
hoạt động, xây dựng tất cả các mục tiêu được chỉ định (bao gồm mọi mục tiêu không phải thử nghiệm
các mục tiêu được chỉ định trên dòng lệnh) và kiểm thử
*_test
và test_suite
sẽ nhắm mục tiêu ngay khi
các điều kiện tiên quyết của chúng được tạo, có nghĩa là lần thực thi kiểm thử
nằm xen kẽ với toà nhà. Việc này thường dẫn đến
mức tăng tốc độ.
Tùy chọn cho bazel test
--cache_test_results=(yes|no|auto)
(-t
)
Nếu tuỳ chọn này được đặt thành "tự động" (mặc định) thì Bazel sẽ chỉ chạy lại kiểm thử nếu có bất kỳ các điều kiện sau áp dụng:
- Bazel phát hiện các thay đổi trong kiểm thử hoặc các phần phụ thuộc của kiểm thử
- kiểm thử được đánh dấu là
external
- đã yêu cầu nhiều lần chạy kiểm thử với
--runs_per_test
- kiểm thử không thành công.
Nếu là "không", tất cả các lượt kiểm thử sẽ được thực thi vô điều kiện.
Nếu "có", hành vi lưu vào bộ nhớ đệm sẽ giống như khi chuyển sang chế độ tự động
ngoại trừ việc công cụ này có thể lưu các lỗi kiểm tra vào bộ nhớ đệm và chạy kiểm thử bằng
--runs_per_test
.
Người dùng đã bật tuỳ chọn này theo mặc định trong
tệp .bazelrc
của họ có thể tìm thấy
từ viết tắt -t
(bật) hoặc -t-
(tắt)
thuận tiện cho việc ghi đè giá trị mặc định trong một lần chạy cụ thể.
--check_tests_up_to_date
Tuỳ chọn này yêu cầu Bazel không chạy kiểm thử mà chỉ kiểm tra và báo cáo kết quả kiểm tra được lưu vào bộ nhớ đệm. Nếu có bất kỳ thử nghiệm nào chưa được được tạo và chạy trước đó hoặc kết quả kiểm thử của ứng dụng đó đã lỗi thời (ví dụ: mã nguồn hoặc tuỳ chọn bản dựng đã thay đổi), sau đó Bazel sẽ báo cáo một thông báo lỗi ("kết quả kiểm tra không được cập nhật"), sẽ ghi lại trạng thái là "NO STATUS" (có màu đỏ, nếu đầu ra màu được bật) và sẽ trả về một mã thoát khác 0.
Tùy chọn này cũng ngụ ý
Hành vi của [--check_up_to_date](#check-up-to-date)
.
Lựa chọn này có thể hữu ích cho các bước kiểm tra trước khi gửi.
--test_verbose_timeout_warnings
Tuỳ chọn này yêu cầu Bazel cảnh báo rõ ràng cho người dùng nếu hết thời gian chờ kiểm thử lâu hơn đáng kể so với thời gian thực thi thực tế của chương trình kiểm thử. Trong khi kiểm thử thời gian chờ cần được đặt sao cho nó không không ổn định, đây là một loại kiểm thử có quá mức có thể ẩn các vấn đề thực xảy ra ngoài dự kiến.
Ví dụ: một chương trình kiểm thử thường thực thi trong vòng 1 hoặc 2 phút thì không thời gian chờ ETERNAL hoặc LONG vì những khoảng thời gian này rất hào phóng.
Tuỳ chọn này hữu ích trong việc giúp người dùng quyết định giá trị thời gian chờ phù hợp hoặc kiểm tra tính hợp lý các giá trị thời gian chờ hiện có.
--[no]test_keep_going
Theo mặc định, tất cả các kiểm thử đều chạy đến khi hoàn tất. Nếu cờ này bị vô hiệu hoá,
tuy nhiên, bản dựng sẽ bị huỷ trong mọi kiểm thử không vượt qua. Các bước xây dựng tiếp theo
và các lệnh gọi kiểm thử không được chạy và các lệnh gọi đang diễn ra sẽ bị huỷ.
Không chỉ định cả --notest_keep_going
và --keep_going
.
--flaky_test_attempts=attempts
Lựa chọn này quy định số lần thử nghiệm tối đa
nếu không thành công vì bất kỳ lý do gì. Thử nghiệm ban đầu thất bại nhưng cuối cùng
thành công được báo cáo là FLAKY
trên tóm tắt kiểm thử. Đó là,
tuy nhiên, được coi là được thông qua khi xác định mã thoát Bazel
hoặc tổng số bài kiểm tra đã thành công. Các chương trình kiểm thử không đạt ở tất cả các lần được phép
bị coi là không thành công.
Theo mặc định (khi tuỳ chọn này không được chỉ định hoặc khi tuỳ chọn được đặt thành
mặc định), chỉ cho phép một lần thử duy nhất đối với các kiểm thử thông thường và
3 đối với các quy tắc kiểm thử có tập hợp thuộc tính flaky
. Bạn có thể chỉ định
một giá trị số nguyên để ghi đè giới hạn tối đa về số lần thử kiểm thử. Bazel cho phép
tối đa 10 lần thử kiểm tra nhằm ngăn chặn việc lạm dụng hệ thống.
--runs_per_test=[regex@]number
Tuỳ chọn này chỉ định số lần thực thi mỗi bài kiểm thử. Tất cả các lượt chạy kiểm thử được coi là các phép kiểm thử riêng biệt (chức năng dự phòng) sẽ áp dụng độc lập cho từng tài khoản).
Trạng thái của mục tiêu không chạy được phụ thuộc vào giá trị của
Cờ --runs_per_test_detects_flakes
:
- Nếu không có, thì mọi lần chạy không thành công đều khiến toàn bộ quy trình kiểm thử không thành công.
- Nếu có và 2 lần chạy từ cùng một phân đoạn trả về ĐẠT và KHÔNG ĐẠT, thì bài kiểm thử sẽ nhận được trạng thái không ổn định (trừ phi các lần chạy không thành công khác làm cho mã không thành công).
Nếu bạn chỉ định một số duy nhất, thì tất cả các lượt kiểm thử sẽ chạy nhiều lần như vậy.
Ngoài ra, bạn có thể chỉ định một biểu thức chính quy bằng cú pháp
biểu thức chính quy@số. Điều này ràng buộc hiệu ứng của --runs_per_test
đối với các mục tiêu
khớp với biểu thức chính quy (--runs_per_test=^//pizza:.*@4
chạy tất cả các thử nghiệm
dưới //pizza/
4 lần).
Bạn có thể chỉ định biểu mẫu --runs_per_test
này nhiều lần.
--[no]runs_per_test_detects_flakes
Nếu bạn chỉ định tuỳ chọn này (theo mặc định, tuỳ chọn này không được áp dụng), Bazel sẽ phát hiện các kết quả không ổn định
kiểm thử phân đoạn thông qua --runs_per_test
. Nếu một hoặc nhiều chạy cho một phân đoạn duy nhất
không thành công và một hoặc nhiều lần chạy cho cùng một phân đoạn, thì mục tiêu sẽ là
bị coi là không ổn định với lá cờ. Nếu bạn không chỉ định, mục tiêu sẽ báo cáo
trạng thái không thành công.
--test_summary=output_style
Chỉ định cách hiển thị bản tóm tắt kết quả kiểm thử.
short
in kết quả của mỗi lần kiểm thử cùng với tên của tệp chứa kết quả kiểm thử nếu kiểm thử không thành công. Đây là lựa chọn mặc định giá trị.terse
tương tự nhưshort
, nhưng còn ngắn hơn nữa: chỉ in thông tin về các chương trình kiểm thử không đạt.detailed
in từng trường hợp kiểm thử không thành công, chứ không phải mỗi lần kiểm thử. Tên của các tệp đầu ra kiểm thử bị bỏ qua.none
không in bản tóm tắt kiểm thử.
--test_output=output_style
Chỉ định cách hiển thị đầu ra kiểm thử:
summary
hiển thị thông tin tóm tắt về việc từng kiểm thử đạt hoặc không thành công. Đồng thời cho biết tên tệp nhật ký đầu ra của các lượt kiểm thử không thành công. Tóm tắt sẽ được in ở cuối quá trình tạo bản dựng (trong quá trình tạo bản dựng, người dùng sẽ thấy rằng chỉ là các thông báo tiến trình đơn giản khi quá trình kiểm thử bắt đầu, đạt hoặc không đạt). Đây là hành vi mặc định.errors
gửi đầu ra kết hợp stdout/stderr từ các lượt kiểm thử không thành công chỉ vào stdout ngay sau khi hoàn tất thử nghiệm, đảm bảo rằng kết quả kiểm thử từ các phép kiểm thử đồng thời không xen kẽ với nhau. In một bản tóm tắt tại bản dựng theo kết quả tóm tắt ở trên.all
tương tự nhưerrors
nhưng in kết quả cho tất cả các thử nghiệm, bao gồm cả những thử nghiệm đã thành công.streamed
truyền trực tuyến đầu ra stdout/stderr từ mỗi lần kiểm thử trong theo thời gian thực.
--java_debug
Tuỳ chọn này khiến máy ảo Java của một bài kiểm thử java phải đợi kết nối từ một
Trình gỡ lỗi tuân thủ JDWP trước khi bắt đầu kiểm thử. Tuỳ chọn này ngụ ý --test_output=streamed
.
--[no]verbose_test_summary
Theo mặc định, tuỳ chọn này được bật, dẫn đến thời gian thử nghiệm và các
thông tin (chẳng hạn như các lần thử kiểm thử) để in ra bản tóm tắt kiểm thử. Nếu
--noverbose_test_summary
đã được chỉ định, bản tóm tắt thử nghiệm sẽ
chỉ bao gồm tên thử nghiệm, trạng thái thử nghiệm và chỉ báo thử nghiệm được lưu vào bộ nhớ đệm và sẽ
được định dạng để không vượt quá 80 ký tự, nếu có thể.
--test_tmpdir=path
Chỉ định thư mục tạm thời cho các chương trình kiểm thử được thực thi cục bộ. Mỗi thử nghiệm sẽ
được thực thi trong một thư mục con riêng biệt bên trong thư mục này. Thư mục này sẽ
sẽ được xoá ở đầu mỗi lệnh bazel test
.
Theo mặc định, bazel sẽ đặt thư mục này trong thư mục cơ sở đầu ra Bazel.
--test_timeout=seconds
HOẶC --test_timeout=seconds,seconds,seconds,seconds
Ghi đè giá trị thời gian chờ cho tất cả các lần kiểm thử bằng cách sử dụng số lượng giây làm giá trị thời gian chờ mới. Nếu bạn chỉ cung cấp một giá trị, thì giá trị này sẽ được dùng cho tất cả các danh mục thời gian chờ kiểm thử.
Ngoài ra, có thể cung cấp 4 giá trị được phân tách bằng dấu phẩy, trong đó chỉ định thời gian chờ riêng cho các thử nghiệm ngắn, trung bình, dài và vĩnh viễn (trong đó đơn đặt hàng). Ở cả hai dạng, giá trị bằng 0 hoặc giá trị âm cho bất kỳ kích thước thử nghiệm nào cũng sẽ được thay thế bằng thời gian chờ mặc định cho các danh mục thời gian chờ nhất định dưới dạng do trang Viết bài kiểm tra xác định. Theo mặc định, Bazel sẽ sử dụng các thời gian chờ này cho tất cả thử nghiệm theo suy luận giới hạn thời gian chờ từ kích thước của kiểm thử, liệu kích thước được đặt ngầm hoặc rõ ràng.
Các chương trình kiểm thử nêu rõ danh mục thời gian chờ khác với sẽ nhận được giá trị giống như khi thời gian chờ đó được đặt ngầm bởi thẻ kích thước. Thử nghiệm về kích thước "nhỏ" khai báo một 'dài' sẽ có cùng thời gian chờ hiệu quả như quảng cáo 'lớn' mà không có .
--test_arg=arg
Truyền các tuỳ chọn/cờ/đối số dòng lệnh cho từng quy trình kiểm thử. Chiến dịch này
có thể được dùng nhiều lần để truyền một số đối số. Ví dụ: --test_arg=--logtostderr --test_arg=--v=3
.
--test_env=variable=_value_
HOẶC --test_env=variable
Chỉ định các biến bổ sung phải được đưa vào thử nghiệm
cho mỗi lần kiểm thử. Nếu bạn không chỉ định value,
kế thừa từ môi trường shell dùng để khởi động bazel test
.
Bạn có thể truy cập vào môi trường ngay trong một chương trình kiểm thử bằng cách sử dụng
System.getenv("var")
(Java), getenv("var")
(C hoặc C++),
--run_under=command-prefix
Thao tác này chỉ định tiền tố mà trình chạy kiểm thử sẽ chèn vào phía trước của lệnh kiểm thử trước khi chạy. Chiến lược phát hành đĩa đơn command-prefix được tách thành các từ bằng cách sử dụng shell Bourne quy tắc mã hoá và sau đó danh sách các từ được thêm vào trước lệnh được thực thi.
Nếu từ đầu tiên là một nhãn đủ điều kiện (bắt đầu bằng
//
). Sau đó, nhãn được thay thế bằng
vị trí thực thi tương ứng được thêm vào trước lệnh
sẽ được thực thi cùng với các từ khác.
Bạn cần lưu ý một số điều sau:
- PATH dùng để chạy kiểm thử có thể khác với PATH trong môi trường của bạn,
vì vậy, bạn có thể cần phải sử dụng đường dẫn tuyệt đối cho
--run_under
(từ đầu tiên trong command-prefix). stdin
chưa được kết nối, vì vậy--run_under
không thể dùng cho lệnh tương tác.
Ví dụ:
--run_under=/usr/bin/strace --run_under='/usr/bin/strace -c' --run_under=/usr/bin/valgrind --run_under='/usr/bin/valgrind --quiet --num-callers=20'
Kiểm thử lựa chọn
Như được nêu trong Các tuỳ chọn lựa chọn đầu ra, bạn có thể lọc thử nghiệm theo kích thước, thời gian chờ, thẻ hoặc ngôn ngữ. Sự tiện lợi bộ lọc tên chung có thể chuyển tiếp đối số lọc cho trình chạy kiểm thử.
Các lựa chọn khác cho bazel test
Cú pháp và các tuỳ chọn còn lại giống hệt như
bazel build
.
Đang chạy tệp thực thi
Lệnh bazel run
tương tự như bazel build
, ngoại trừ
nó được dùng để tạo và chạy một mục tiêu duy nhất. Dưới đây là một phiên điển hình:
% bazel run java/myapp:myapp -- --arg1 --arg2 Welcome to Bazel INFO: Loading package: java/myapp INFO: Loading package: foo/bar INFO: Loading complete. Analyzing... INFO: Found 1 target... ... Target //java/myapp:myapp up-to-date: bazel-bin/java/myapp:myapp INFO: Elapsed time: 0.638s, Critical Path: 0.34s INFO: Running command line: bazel-bin/java/myapp:myapp --arg1 --arg2 Hello there $EXEC_ROOT/java/myapp/myapp --arg1 --arg2
bazel run
tương tự như vậy nhưng không giống hệt nhau để gọi trực tiếp
tệp nhị phân do Bazel tạo ra và hành vi của tệp này là khác nhau tuỳ thuộc vào việc
tệp nhị phân được gọi có phải là một thử nghiệm hay không.
Khi tệp nhị phân không phải là một kiểm thử, thư mục đang hoạt động hiện tại sẽ là cây runfiles của tệp nhị phân.
Khi tệp nhị phân là một kiểm thử, thư mục đang hoạt động hiện tại sẽ là gốc thực thi
và nỗ lực thành thực để nhân bản các thử nghiệm về môi trường thường
chạy. Tuy nhiên, việc mô phỏng này không hoàn hảo
và các chương trình kiểm thử có nhiều
phân đoạn không thể chạy theo cách này (
Bạn có thể dùng tuỳ chọn dòng lệnh --test_sharding_strategy=disabled
để giải quyết vấn đề này)
Các biến môi trường bổ sung sau đây cũng có sẵn cho tệp nhị phân:
BUILD_WORKSPACE_DIRECTORY
: gốc của không gian làm việc nơi bản dựng đã được chạy.BUILD_WORKING_DIRECTORY
: thư mục đang làm việc trong đó Địa điểm khởi hành của Bazel.
Những công cụ này có thể được sử dụng, chẳng hạn, để diễn giải tên tệp trên dòng lệnh trong thân thiện với người dùng.
Tùy chọn cho bazel run
--run_under=command-prefix
Điều này có tác dụng tương tự như tuỳ chọn --run_under
cho
bazel test
(xem ở trên),
ngoại trừ việc áp dụng cho lệnh do bazel
run
chạy thay vì các kiểm thử do bazel test
chạy
và không thể chạy dưới nhãn.
Lọc kết quả ghi nhật ký từ Bazel
Khi gọi một tệp nhị phân bằng bazel run
, Bazel sẽ in kết quả ghi nhật ký từ Bazel
và tệp nhị phân trong lệnh gọi. Để nhật ký ít ồn hơn, bạn có thể
loại bỏ dữ liệu đầu ra từ chính Bazel bằng --ui_event_filters
và
Cờ --noshow_progress
.
Ví dụ:
bazel run --ui_event_filters=-info,-stdout,-stderr --noshow_progress //java/myapp:myapp
Thực thi kiểm thử
bazel run
cũng có thể thực thi các tệp nhị phân kiểm thử. Việc này có tác động của
chạy kiểm thử trong môi trường gần đúng với môi trường được mô tả tại
Kiểm thử viết. Lưu ý rằng không có
Các đối số --test_*
có ảnh hưởng khi chạy kiểm thử theo cách này, ngoại trừ
--test_arg
.
Dọn dẹp dữ liệu đầu ra của bản dựng
Lệnh clean
Bazel có một lệnh clean
, tương tự như lệnh của Make.
Thao tác này sẽ xoá các thư mục đầu ra của tất cả cấu hình bản dựng đã thực hiện
bởi phiên bản Bazel này hoặc toàn bộ cây hoạt động được tạo bởi
thực thể Bazel và đặt lại bộ nhớ đệm nội bộ. Nếu được thực thi mà không có
tuỳ chọn dòng lệnh, sau đó là thư mục đầu ra cho tất cả cấu hình
sẽ bị làm sạch.
Hãy nhớ rằng mỗi thực thể Bazel được liên kết với một không gian làm việc duy nhất, do đó
Lệnh clean
sẽ xoá mọi kết quả của mọi bản dựng bạn đã hoàn tất
bằng thực thể Bazel đó trong không gian làm việc đó.
Để xoá hoàn toàn toàn bộ cây hoạt động do Bazel tạo
, bạn có thể chỉ định tuỳ chọn --expunge
. Thời gian
được thực thi bằng --expunge
, thì lệnh sạch chỉ đơn giản là
sẽ xoá toàn bộ cây cơ sở đầu ra, ngoài việc tạo bản dựng
chứa tất cả các tệp tạm thời do Bazel tạo. Điều này cũng
dừng máy chủ Bazel sau khi làm sạch, tương đương với lệnh shutdown
. Ví dụ: để
dọn dẹp mọi dấu vết ổ đĩa và bộ nhớ của thực thể Bazel, bạn có thể
chỉ định:
% bazel clean --expunge
Ngoài ra, bạn có thể dọn sạch trong nền bằng cách sử dụng
--expunge_async
. Có thể gọi lệnh Bazel an toàn
trong cùng một ứng dụng khách trong khi xóa không đồng bộ tiếp tục chạy.
Lệnh clean
được cung cấp chủ yếu như một phương tiện
lấy lại dung lượng ổ đĩa cho không gian làm việc không còn cần thiết.
Các bản dựng lại dần dần của Bazel có thể không
hoàn hảo để có thể dùng clean
nhằm khôi phục một
trạng thái khi sự cố phát sinh.
Thiết kế của Bazel là để những vấn đề này
có thể khắc phục được và
những lỗi này có mức độ ưu tiên cao cần được khắc phục. Nếu bạn
tìm bản dựng tăng dần không chính xác, gửi báo cáo lỗi và báo cáo lỗi trong các công cụ
thay vì sử dụng clean
.
Truy vấn biểu đồ phần phụ thuộc
Bazel sử dụng một ngôn ngữ truy vấn để đặt câu hỏi về biểu đồ phần phụ thuộc dùng trong quá trình tạo bản dựng. Ngôn ngữ truy vấn được sử dụng bằng 2 lệnh: query và cquery. Điểm khác biệt chính giữa có hai lệnh là truy vấn chạy sau giai đoạn tải và cquery sẽ chạy sau giai đoạn phân tích. Những công cụ này là trợ giúp vô cùng quý giá cho nhiều công việc kỹ thuật phần mềm.
Ngôn ngữ truy vấn dựa trên ý tưởng về các phép tính đại số trên đồ thị; được ghi lại chi tiết trong
Tài liệu tham khảo về truy vấn Bazel. Vui lòng tham khảo tài liệu đó để tham khảo, để và các tuỳ chọn dòng lệnh dành riêng cho truy vấn.
Công cụ truy vấn chấp nhận một số dòng lệnh
. --output
sẽ chọn định dạng đầu ra.
--[no]keep_going
(bị tắt theo mặc định) gây ra truy vấn
công cụ để tiếp tục tiến triển khi lỗi; hành vi này có thể
tắt nếu kết quả không đầy đủ không được chấp nhận trong trường hợp có lỗi.
Tuỳ chọn --[no]tool_deps
,
bật theo mặc định, khiến các phần phụ thuộc trong cấu hình không phải mục tiêu được đưa vào
biểu đồ phần phụ thuộc mà truy vấn hoạt động.
Lựa chọn --[no]implicit_deps
, được bật theo mặc định, khiến
các phần phụ thuộc ngầm ẩn được đưa vào biểu đồ phần phụ thuộc mà qua đó truy vấn hoạt động. Một
phần phụ thuộc ngầm ẩn là phần không được chỉ định rõ ràng trong tệp BUILD
nhưng được thêm bởi bazel.
Ví dụ: "Hiển thị vị trí của định nghĩa (trong tệp BUILD) của tất cả genrules cần thiết để xây dựng mọi kiểm thử trong cây PEBL."
bazel query --output location 'kind(genrule, deps(kind(".*_test rule", foo/bar/pebl/...)))'
Truy vấn biểu đồ hành động
Lệnh aquery
cho phép bạn truy vấn các hành động trong biểu đồ bản dựng.
Công cụ này hoạt động trên biểu đồ mục tiêu được định cấu hình sau khi phân tích và hiển thị
thông tin về các thao tác, cấu phần phần mềm và mối quan hệ của chúng.
Công cụ này chấp nhận một số tuỳ chọn dòng lệnh.
--output
sẽ chọn định dạng đầu ra. Định dạng đầu ra mặc định
(text
) có thể đọc được, hãy sử dụng proto
hoặc textproto
cho
định dạng mà máy có thể đọc được.
Đáng chú ý là lệnh aquery chạy trên bản dựng Bazel thông thường và kế thừa
tập hợp các tuỳ chọn có sẵn trong quá trình tạo bản dựng.
API này hỗ trợ cùng một tập hợp chức năng cũng có sẵn cho các dịch vụ truyền thống
query
nhưng siblings
, buildfiles
và
tests
.
Để biết thêm thông tin chi tiết, hãy xem Truy vấn trong biểu đồ hành động.
Các lệnh và tuỳ chọn khác
help
Lệnh help
cung cấp sự trợ giúp trực tuyến. Theo mặc định,
hiển thị bản tóm tắt các lệnh hiện có và chủ đề trợ giúp, như minh hoạ trong
Xây dựng cùng Bazel.
Việc chỉ định một đối số sẽ hiển thị trợ giúp chi tiết cho một đối số cụ thể
chủ đề. Hầu hết chủ đề là các lệnh Bazel, chẳng hạn như build
hoặc query
, nhưng vẫn có một số chủ đề trợ giúp khác
không tương ứng với các lệnh.
--[no]long
(-l
)
Theo mặc định, bazel help [topic]
chỉ in một
phần tóm tắt các lựa chọn có liên quan cho một chủ đề. Nếu
tuỳ chọn --long
được chỉ định, loại, giá trị mặc định
và thông tin mô tả đầy đủ về từng tuỳ chọn cũng được in.
shutdown
Bạn có thể dừng các quy trình trên máy chủ Bazel bằng cách sử dụng shutdown
. Lệnh này khiến máy chủ Bazel thoát ngay khi
không hoạt động (ví dụ: sau khi hoàn thành một bản dựng bất kỳ hoặc
các lệnh hiện đang thực hiện). Để biết thêm thông tin, hãy xem
Triển khai ứng dụng/máy chủ.
Các máy chủ Bazel tự dừng sau khi hết thời gian chờ ở trạng thái không hoạt động, vì vậy, lệnh này hiếm khi cần thiết; Tuy nhiên, mã này có thể hữu ích trong tập lệnh khi biết rằng sẽ không có phiên tạo nào khác diễn ra trong một không gian làm việc nhất định.
shutdown
chấp nhận một yêu cầu
--iff_heap_size_greater_than _n_
yêu cầu đối số số nguyên (tính bằng MB). Nếu được chỉ định, thao tác này sẽ tắt
có điều kiện đối với dung lượng bộ nhớ đã sử dụng. Đây là
hữu ích cho các tập lệnh khởi tạo nhiều bản dựng, như bất kỳ bộ nhớ nào
rò rỉ trong máy chủ Bazel có thể khiến máy chủ gặp sự cố một cách bất ngờ
dịp; việc thực hiện khởi động lại có điều kiện sẽ giành quyền ưu tiên điều kiện này.
info
Lệnh info
in nhiều giá trị liên kết với
phiên bản máy chủ Bazel hoặc với một cấu hình bản dựng cụ thể.
(Các tập lệnh điều khiển bản dựng có thể sử dụng những dữ liệu này.)
Lệnh info
cũng cho phép một (không bắt buộc)
, là tên của một trong các khoá trong danh sách bên dưới.
Trong trường hợp này, bazel info key
sẽ chỉ in
giá trị cho một khóa đó. (Điều này đặc biệt thuận tiện khi
viết tập lệnh Bazel để tránh phải truyền dẫn kết quả
thông qua sed -ne /key:/s/key://p
:
Dữ liệu không phụ thuộc vào cấu hình
release
: nhãn phát hành của Bazel này hoặc "phiên bản phát triển" nếu đây không phải là một nhị phân.workspace
đường dẫn tuyệt đối đến không gian làm việc cơ sở thư mục.install_base
: đường dẫn tuyệt đối đến tệp cài đặt thư mục mà phiên bản Bazel này sử dụng cho người dùng hiện tại. Bazel sản xuất cài đặt các tệp thực thi được yêu cầu nội bộ bên dưới thư mục này.output_base
: đường dẫn tuyệt đối đến kết quả cơ sở thư mục mà thực thể Bazel này sử dụng cho người dùng hiện tại và không gian làm việc. Bazel sử dụng tất cả những gì chưa từng có bên dưới thư mục này.execution_root
: đường dẫn tuyệt đối đến điểm thực thi thư mục gốc trong output_base. Thư mục này là thư mục gốc của mọi tệp có thể truy cập vào các lệnh được thực thi trong quá trình tạo bản dựng và là lệnh cho các lệnh đó. Nếu thư mục workspace có thể ghi, đường liên kết tượng trưng có tênbazel-<workspace>
được đặt ở đó trỏ tới thư mục này.output_path
: đường dẫn tuyệt đối đến kết quả đầu ra bên dưới gốc thực thi được dùng cho tất cả các tệp thực sự được tạo nhờ lệnh bản dựng. Nếu thư mục Workspace là có thể ghi, một đường liên kết tượng trưng có tênbazel-out
được đặt ở đó chỉ vào thư mục này.server_pid
: mã nhận dạng tiến trình của máy chủ Bazel của chúng tôi.server_log
: đường dẫn tuyệt đối đến tệp nhật ký gỡ lỗi của máy chủ Bazel. Tệp này chứa thông tin gỡ lỗi cho tất cả các lệnh trong suốt thời gian hoạt động của Bazel và dành cho người dùng và các nhà phát triển Bazel sử dụng.command_log
: đường dẫn tuyệt đối đến tệp nhật ký lệnh; luồng này chứa các luồng stdout và stderr xen kẽ của Lệnh Bazel. Xin lưu ý rằng việc chạybazel info
sẽ ghi đè nội dung của tệp này vì sau đó, tệp này sẽ trở thành lệnh Bazel gần đây nhất. Tuy nhiên, vị trí của tệp nhật ký lệnh sẽ không thay đổi trừ phi bạn thay đổi chế độ cài đặt của--output_base
hoặc Tuỳ chọn--output_user_root
.used-heap-size
,committed-heap-size
,max-heap-size
: báo cáo nhiều kích thước vùng nhớ khối xếp JVM khác nhau tham số. Tương ứng: bộ nhớ hiện đang được sử dụng, bộ nhớ hiện tại đảm bảo có sẵn cho JVM từ hệ thống, tối đa khả năng phân bổ tương ứng.gc-count
,gc-time
: Tổng số tích luỹ của thu gom rác kể từ khi máy chủ Bazel này ra đời và thời gian đã sử dụng để thực hiện chúng. Xin lưu ý rằng các giá trị này không được đặt lại ở đầu mỗi bản dựng.package_path
: Danh sách các đường dẫn được phân tách bằng dấu hai chấm sẽ là đã tìm kiếm các gói hàng bằng bazel. Có cùng định dạng với Đối số dòng lệnh tạo bản dựng--package_path
.
Ví dụ: Mã quy trình của máy chủ Bazel.
% bazel info server_pid 1285
Dữ liệu theo cấu hình cụ thể
Những dữ liệu này có thể chịu ảnh hưởng của các lựa chọn cấu hình được chuyển
đến bazel info
, cho
ví dụ: --cpu
, --compilation_mode
,
v.v. Lệnh info
chấp nhận tất cả
các tuỳ chọn kiểm soát phần phụ thuộc
vì một số đơn vị đo lường sẽ xác định vị trí của
thư mục đầu ra của một bản dựng, lựa chọn trình biên dịch, v.v.
bazel-bin
,bazel-testlogs
bazel-genfiles
: báo cáo đường dẫn tuyệt đối đến các thư mụcbazel-*
trong đó chương trình được tạo bởi bản dựng đã được đặt. Điều này thường giống như các đường liên kết tượng trưngbazel-*
được tạo trong thư mục không gian làm việc cơ sở sau tạo thành công. Tuy nhiên, nếu thư mục workspace là thư mục chỉ đọc, bạn không thể tạo đường liên kết tượng trưngbazel-*
. Tập lệnh sử dụng giá trị dobazel info
báo cáo, thay vì giả định của đường liên kết tượng trưng sẽ mạnh mẽ hơn.- Các tính năng hoàn chỉnh
"Nhãn hiệu" môi trường. Nếu cờ
--show_make_env
là đã chỉ định, tất cả biến trong "Make" của cấu hình hiện tại môi trường cũng được hiển thị (chẳng hạn nhưCC
,GLIBC_VERSION
, v.v.). Đây là những biến được truy cập bằng$(CC)
hoặcvarref("CC")
bên trong tệp BUILD.
Ví dụ: trình biên dịch C++ cho cấu hình hiện tại.
Đây là biến $(CC)
trong thuộc tính "Make" môi trường,
vì vậy, bạn cần có cờ --show_make_env
.
% bazel info --show_make_env -c opt COMPILATION_MODE opt
Ví dụ: thư mục đầu ra bazel-bin
cho giá trị hiện tại
. Điều này được đảm bảo là chính xác ngay cả trong trường hợp
không thể tạo đường liên kết tượng trưng bazel-bin
vì lý do nào đó
(chẳng hạn như nếu bạn đang tạo từ một thư mục chỉ đọc).
% bazel info --cpu=piii bazel-bin /var/tmp/_bazel_johndoe/fbd0e8a34f61ce5d491e3da69d959fe6/execroot/io_bazel/bazel-out/piii-opt/bin % bazel info --cpu=k8 bazel-bin /var/tmp/_bazel_johndoe/fbd0e8a34f61ce5d491e3da69d959fe6/execroot/io_bazel/bazel-out/k8-opt/bin
version
và --version
Lệnh phiên bản in thông tin chi tiết về phiên bản về Bazel được tạo tệp nhị phân, bao gồm danh sách thay đổi nơi tạo và ngày tháng. Những thuật toán này đặc biệt hữu ích trong việc xác định xem bạn có Bazel hoặc nếu bạn đang báo cáo lỗi. Một số giá trị thú vị là:
changelist
: danh sách thay đổi mà phiên bản này của Bazel đã được phát hành.label
: nhãn phát hành của Bazel này hoặc "phiên bản phát triển" nếu đây không phải là một nhị phân. Rất hữu ích khi báo cáo lỗi.
bazel --version
, không có đối số nào khác, sẽ đưa ra cùng một kết quả như
bazel version --gnu_format
, ngoại trừ không có tác dụng phụ của việc có thể bắt đầu
máy chủ Bazel hoặc giải nén tệp lưu trữ máy chủ. bazel --version
có thể chạy từ
ở bất cứ đâu – phương thức này không yêu cầu thư mục không gian làm việc.
mobile-install
Lệnh mobile-install
cài đặt ứng dụng vào thiết bị di động.
Hiện chỉ hỗ trợ các thiết bị Android chạy ART.
Xem phần cài đặt bazel trên thiết bị di động để biết thêm thông tin.
Các tuỳ chọn sau được hỗ trợ:
--incremental
Nếu được thiết lập, Bazel sẽ cố gắng cài đặt ứng dụng dần dần, tức là chỉ những
những phần đã thay đổi kể từ phiên bản cuối cùng. Thao tác này không thể cập nhật tài nguyên
được tham chiếu từ AndroidManifest.xml
, mã gốc hoặc Java
(chẳng hạn như những tài nguyên được Class.getResource()
tham chiếu đến). Nếu các yêu cầu này
mọi thứ thay đổi, bạn phải bỏ qua tuỳ chọn này. Trái ngược với tinh thần của Bazel
và do những hạn chế của nền tảng Android, đây là
trách nhiệm của người dùng biết khi nào lệnh này đủ hiệu quả và
khi cần cài đặt toàn bộ ứng dụng.
Nếu bạn đang dùng thiết bị chạy Marshmallow trở lên, hãy cân nhắc
Cờ --split_apks
.
--split_apks
Liệu có sử dụng tệp APK phân tách để cài đặt và cập nhật ứng dụng trên thiết bị hay không.
Chỉ dùng được trên các thiết bị chạy Marshmallow trở lên. Lưu ý rằng
--incremental
cờ
không cần thiết khi dùng --split_apks
.
--start_app
Khởi động ứng dụng ở trạng thái mới sau khi cài đặt. Tương đương với --start=COLD
.
--debug_app
Chờ trình gỡ lỗi được đính kèm trước khi khởi động ứng dụng ở trạng thái sạch sau khi cài đặt.
Tương đương với --start=DEBUG
.
--start=_start_type_
Cách khởi động ứng dụng sau khi cài đặt. Các _start_type_s được hỗ trợ:
NO
Không khởi động được ứng dụng. Đây là tuỳ chọn mặc định.COLD
Khởi động ứng dụng từ trạng thái mới sau khi cài đặt.WARM
Giữ nguyên và khôi phục trạng thái của ứng dụng khi lượt cài đặt gia tăng.DEBUG
Chờ trình gỡ lỗi trước khi khởi động ứng dụng ở trạng thái sạch sau cài đặt.
--adb=path
Cho biết tệp nhị phân adb
sẽ được sử dụng.
Giá trị mặc định là sử dụng adb trong SDK Android được chỉ định bởi
--android_sdk
.
--adb_arg=serial
Các đối số bổ sung cho adb
. Các lệnh này xuất hiện trước lệnh con trong
dòng lệnh và thường dùng để chỉ định thiết bị sẽ cài đặt.
Ví dụ: cách chọn thiết bị Android hoặc trình mô phỏng để sử dụng:
% bazel mobile-install --adb_arg=-s --adb_arg=deadbeef
gọi adb
dưới dạng
adb -s deadbeef install ...
--incremental_install_verbosity=number
Độ chi tiết khi cài đặt gia tăng. Đặt thành 1 để đặt tính năng ghi nhật ký gỡ lỗi được in ra bảng điều khiển.
dump
Lệnh dump
in để xuất chuẩn một tệp kết xuất của
trạng thái nội bộ của máy chủ Bazel. Đây là lệnh
chủ yếu để các nhà phát triển Bazel sử dụng, vì vậy, kết quả của lệnh này
không được xác định và có thể thay đổi.
Theo mặc định, lệnh sẽ chỉ in thông báo trợ giúp nêu rõ những nội dung có thể có các tuỳ chọn kết xuất các khu vực cụ thể của tiểu bang Bazel. Để kết xuất nội bộ, bạn phải chỉ định ít nhất một trong các tuỳ chọn.
Các tuỳ chọn sau được hỗ trợ:
--action_cache
kết xuất nội dung bộ nhớ đệm của thao tác.--packages
kết xuất nội dung bộ nhớ đệm của gói.--skyframe
trạng thái kết xuất của biểu đồ phần phụ thuộc Bazel nội bộ.--rules
kết xuất nội dung tóm tắt quy tắc cho từng quy tắc và lớp khung hình, bao gồm cả số lượng và số hành động. Điều này bao gồm cả quy tắc gốc và quy tắc Starlark. Nếu tính năng theo dõi bộ nhớ được bật, thì quy tắc mức tiêu thụ bộ nhớ cũng được in.--skylark_memory
kết xuất một Tệp .gz tương thích với pprof thành đường dẫn được chỉ định. Bạn phải bật tính năng theo dõi bộ nhớ thì chế độ này mới hoạt động.
Theo dõi bộ nhớ
Một số lệnh dump
yêu cầu theo dõi bộ nhớ. Để bật tính năng này, bạn phải vượt qua
cờ khởi động cho Bazel:
--host_jvm_args=-javaagent:$BAZEL/third_party/allocation_instrumenter/java-allocation-instrumenter-3.3.0.jar
--host_jvm_args=-DRULE_MEMORY_TRACKER=1
Tác nhân java được kiểm tra trong Bazel tại
third_party/allocation_instrumenter/java-allocation-instrumenter-3.3.0.jar
, vậy nên
hãy điều chỉnh $BAZEL
cho nơi bạn lưu trữ kho lưu trữ Bazel của mình.
Đừng quên tiếp tục truyền các tuỳ chọn này đến Bazel cho mọi lệnh, nếu không máy chủ sẽ Khởi động lại.
Ví dụ:
% bazel --host_jvm_args=-javaagent:$BAZEL/third_party/allocation_instrumenter/java-allocation-instrumenter-3.3.0.jar \ --host_jvm_args=-DRULE_MEMORY_TRACKER=1 \ build --nobuild <targets> # Dump rules % bazel --host_jvm_args=-javaagent:$BAZEL/third_party/allocation_instrumenter/java-allocation-instrumenter-3.3.0.jar \ --host_jvm_args=-DRULE_MEMORY_TRACKER=1 \ dump --rules # Dump Starlark heap and analyze it with pprof % bazel --host_jvm_args=-javaagent:$BAZEL/third_party/allocation_instrumenter/java-allocation-instrumenter-3.3.0.jar \ --host_jvm_args=-DRULE_MEMORY_TRACKER=1 \ dump --skylark_memory=$HOME/prof.gz % pprof -flame $HOME/prof.gz
analyze-profile
Lệnh analyze-profile
phân tích dữ liệu đã thu thập trước đó
trong quá trình tạo bằng cách sử dụng tuỳ chọn --profile
. Công cụ này cung cấp một số
các tuỳ chọn phân tích quá trình thực thi bản dựng hoặc xuất dữ liệu trong
định dạng được chỉ định.
Các tuỳ chọn sau được hỗ trợ:
--dump
hiển thị tất cả dữ liệu đã thu thập trong một ở định dạng mà con người có thể đọc được. Tuy nhiên, điều này chưa hỗ trợ các định dạng khác.
Để biết thông tin chi tiết về định dạng và thông tin trợ giúp về cách sử dụng, hãy xem Khắc phục sự cố về hiệu suất bằng cách phân tích.
canonicalize-flags
canonicalize-flags
Lệnh này sẽ lấy danh sách các tuỳ chọn cho một lệnh Bazel và trả về danh sách các tuỳ chọn
có tác dụng tương tự. Danh sách các lựa chọn mới là danh sách chuẩn. Ví dụ:
hai danh sách tuỳ chọn có cùng hiệu ứng sẽ được chuẩn hoá thành cùng một danh sách mới.
Bạn có thể dùng tuỳ chọn --for_command
để chọn giữa các
. Tại thời điểm này, chỉ build
và test
là
được hỗ trợ. Các tuỳ chọn mà lệnh đã cho không hỗ trợ sẽ gây ra lỗi.
Ví dụ:
% bazel canonicalize-flags -- --config=any_name --test_tag_filters="-lint" --config=any_name --test_tag_filters=-lint
Tuỳ chọn khởi động
Các tuỳ chọn được mô tả trong phần này ảnh hưởng đến việc khởi động Java máy ảo được quy trình máy chủ Bazel sử dụng và áp dụng cho tất cả các lệnh tiếp theo do máy chủ đó xử lý. Nếu đã có đang chạy máy chủ Bazel và các tuỳ chọn khởi động không khớp, thì nó sẽ khởi động lại.
Tất cả tuỳ chọn được mô tả trong phần này phải được chỉ định bằng cách sử dụng tham số
--key=value
hoặc --key value
của bạn. Ngoài ra, các tùy chọn này phải xuất hiện trước tên của Bazel
. Sử dụng startup --key=value
để liệt kê các thành phần này trong tệp .bazelrc
.
--output_base=dir
Tùy chọn này yêu cầu một đối số đường dẫn phải chỉ định một thư mục có thể ghi. Bazel sẽ sử dụng vị trí này để viết tất cả đầu ra. Cơ sở đầu ra cũng là khoá mà ứng dụng xác định máy chủ Bazel. Khi thay đổi cơ sở đầu ra, bạn sẽ thay đổi máy chủ để xử lý lệnh.
Theo mặc định, cơ sở đầu ra được lấy từ tên đăng nhập của người dùng,
và tên của thư mục workspace (thực tế là chuỗi đại diện MD5),
vì vậy, một giá trị thông thường sẽ có dạng như sau:
/var/tmp/google/_bazel_johndoe/d41d8cd98f00b204e9800998ecf8427e
.
Ví dụ:
OUTPUT_BASE=/var/tmp/google/_bazel_johndoe/custom_output_base % bazel --output_base ${OUTPUT_BASE}1 build //foo & bazel --output_base ${OUTPUT_BASE}2 build //bar
Trong lệnh này, hai lệnh Bazel chạy đồng thời (do
toán tử shell &
), mỗi toán tử sử dụng một Bazel khác nhau
thực thể máy chủ (do các cơ sở đầu ra khác nhau).
Ngược lại, nếu cơ sở đầu ra mặc định được sử dụng trong cả hai lệnh,
thì cả hai yêu cầu sẽ được gửi đến cùng một máy chủ
xử lý các sự kiện đó theo tuần tự: tạo //foo
trước, sau đó
bằng bản dựng tăng dần của //bar
.
--output_user_root=dir
Trỏ tới thư mục gốc nơi tạo cơ sở đầu ra và cơ sở cài đặt. Thư mục không được tồn tại hoặc thuộc sở hữu của người dùng thực hiện lệnh gọi. Trước đây, thao tác này được phép trỏ tới một thư mục được chia sẻ giữa nhiều người dùng nhưng tài khoản này không được phép nữa. Việc này có thể được cho phép một lần vấn đề #11100 được giải quyết.
Nếu bạn chỉ định tuỳ chọn --output_base
, tuỳ chọn này sẽ ghi đè
dùng --output_user_root
để tính cơ sở đầu ra.
Vị trí số lượt cài đặt được tính toán dựa trên
--output_user_root
, cùng với mã nhận dạng MD5 của Bazel được nhúng
tệp nhị phân.
Bạn có thể dùng tuỳ chọn --output_user_root
để chọn
vị trí cơ sở thay thế cho tất cả đầu ra của Bazel (số lượt cài đặt và đầu ra
cơ sở) nếu có vị trí tốt hơn trong bố cục hệ thống tệp.
--server_javabase=dir
Chỉ định máy ảo Java mà chính Bazel chạy trong đó. Giá trị này phải là một đường dẫn đến thư mục chứa JDK hoặc JRE. Không được là một nhãn. Tuỳ chọn này sẽ xuất hiện trước mọi lệnh Bazel, ví dụ:
% bazel --server_javabase=/usr/local/buildtools/java/jdk11 build //foo
Cờ này không ảnh hưởng đến các JVM được sử dụng bởi các quy trình phụ Bazel, chẳng hạn như ứng dụng, kiểm thử, công cụ, v.v. Sử dụng các tuỳ chọn bản dựng --javabase hoặc --host_javabase.
Cờ này trước đây có tên là --host_javabase
(đôi khi được gọi là
"phía bên trái" --host_javabase
), nhưng đã được đổi tên để tránh nhầm lẫn với
cờ dựng --host_javabase (đôi khi được gọi là
"bên phải" --host_javabase
).
--host_jvm_args=string
Chỉ định tuỳ chọn khởi động sẽ được truyền tới máy ảo Java trong đó chính Bazel chạy. Bạn có thể sử dụng thuộc tính này để đặt kích thước ngăn xếp, ví dụ:
% bazel --host_jvm_args="-Xss256K" build //foo
Bạn có thể dùng tuỳ chọn này nhiều lần với các đối số riêng lẻ. Lưu ý rằng hiếm khi cần đặt cờ này. Bạn cũng có thể chuyển danh sách chuỗi được phân tách bằng dấu cách, mỗi đối số này sẽ được hiểu là một đối số JVM riêng, nhưng tính năng này sẽ sớm được không dùng nữa.
Điều này không ảnh hưởng đến bất kỳ máy JVM nào được sử dụng
các quy trình phụ của Bazel: ứng dụng, kiểm thử, công cụ, v.v. Cần vượt qua
Các tuỳ chọn của JVM cho các chương trình Java có thể thực thi, cho dù được chạy bằng bazel
run
hay trên dòng lệnh, bạn đều nên sử dụng
đối số --jvm_flags
tất cả chương trình java_binary
và java_test
của Google. Ngoài ra, đối với các chương trình kiểm thử, hãy sử dụng bazel test --test_arg=--jvm_flags=foo ...
.
--host_jvm_debug
Tuỳ chọn này khiến máy ảo Java phải đợi kết nối từ trình gỡ lỗi tuân thủ JDWP trước gọi phương thức chính của chính Bazel. Việc này chủ yếu dành cho các nhà phát triển Bazel.
--autodetect_server_javabase
Tuỳ chọn này khiến Bazel tự động tìm kiếm JDK đã cài đặt khi khởi động,
và quay lại JRE đã cài đặt nếu không có JRE được nhúng.
Bạn có thể dùng --explicit_server_javabase
để chọn một JRE rõ ràng để
vận hành Bazel.
--batch
Chế độ lô khiến Bazel không sử dụng chế độ máy khách/máy chủ chuẩn, nhưng thay vào đó chạy bazel quy trình java cho một lệnh đơn lẻ, được dùng để dễ dự đoán hơn ngữ nghĩa liên quan đến việc xử lý tín hiệu, kiểm soát công việc và môi trường tính kế thừa biến và cần thiết để chạy bazel trong trình tù chroot.
Chế độ lô giữ lại ngữ nghĩa hàng đợi thích hợp trong cùng một output_base. Điều này có nghĩa là các lệnh gọi đồng thời sẽ được xử lý theo thứ tự mà không bị trùng lặp. Nếu chế độ hàng loạt Bazel chạy trên một ứng dụng có máy chủ đang chạy, thì trước tiên tắt máy chủ trước khi xử lý lệnh.
Bazel sẽ chạy chậm hơn ở chế độ hàng loạt hoặc với các giải pháp thay thế được mô tả ở trên. Lý do là vì bộ nhớ đệm của tệp bản dựng nằm trong bộ nhớ nên bộ nhớ đệm sẽ không được bảo tồn giữa các lệnh gọi hàng loạt tuần tự. Do đó, việc sử dụng chế độ hàng loạt thường có ý nghĩa hơn trong trường hợp hiệu suất thì ít quan trọng hơn, chẳng hạn như bản dựng liên tục.
--max_idle_secs=n
Tuỳ chọn này chỉ định khoảng thời gian, tính bằng giây, quá trình máy chủ Bazel
sẽ đợi sau yêu cầu ứng dụng cuối cùng trước khi thoát. Chiến lược phát hành đĩa đơn
giá trị mặc định là 10800 (3 giờ). --max_idle_secs=0
sẽ khiến
Quy trình máy chủ Bazel tồn tại vô thời hạn.
Các tập lệnh gọi Bazel có thể sử dụng tuỳ chọn này để đảm bảo rằng
chúng không để lại các quy trình của máy chủ Bazel trên máy của người dùng khi
sẽ không chạy theo cách khác.
Ví dụ: tập lệnh gửi trước có thể muốn
gọi bazel query
để đảm bảo rằng người dùng đang chờ xử lý
thì việc thay đổi sẽ không tạo ra các phần phụ thuộc không mong muốn. Tuy nhiên, nếu
người dùng chưa tạo một bản dựng nào gần đây trong không gian làm việc đó, thì có thể
không mong muốn để tập lệnh gửi trước chỉ khởi động một máy chủ Bazel
để thiết bị duy trì trạng thái rảnh cho đến hết ngày.
Bằng cách chỉ định một giá trị nhỏ của --max_idle_secs
trong
yêu cầu truy vấn của bạn, tập lệnh có thể đảm bảo rằng nếu nó gây ra
máy chủ đó khởi động thì máy chủ đó sẽ thoát ngay lập tức, nhưng nếu
đã có một máy chủ đang chạy, máy chủ đó sẽ tiếp tục chạy
cho đến khi thiết bị không hoạt động như bình thường. Tất nhiên, hiện tại
bộ định giờ ở trạng thái rảnh của máy chủ sẽ được đặt lại.
--[no]shutdown_on_low_sys_mem
Nếu bạn bật chính sách này và đặt --max_idle_secs
thành một thời lượng dương,
sau khi máy chủ bản dựng không hoạt động trong một thời gian, hãy tắt máy chủ khi hệ thống
bộ nhớ thấp. Chỉ Linux.
Ngoài việc chạy quy trình kiểm tra trạng thái rảnh tương ứng với max_idle_secs, máy chủ bản dựng sẽ bắt đầu theo dõi bộ nhớ hệ thống hiện có sau khi máy chủ không hoạt động một thời gian. Nếu bộ nhớ hệ thống còn trống quá thấp, máy chủ sẽ thoát.
--[no]block_for_lock
Nếu được bật, Bazel sẽ đợi các lệnh Bazel khác chứa khoá máy chủ để hoàn tất trước khi tiến hành. Nếu bạn tắt chính sách này, Bazel sẽ thoát nếu không thể có được khoá ngay lập tức và tiếp tục.
Nhà phát triển có thể sử dụng thông tin này trong các bước kiểm tra trước khi gửi để tránh phải chờ lâu bởi một lệnh Bazel khác trong cùng một ứng dụng khách.
--io_nice_level=n
Đặt một mức từ 0 đến 7 để lên lịch IO hoạt động hiệu quả nhất. 0 là mức độ ưu tiên cao nhất, 7 là thấp nhất. Trình lập lịch biểu dự đoán chỉ có thể thực hiện tối đa mức độ ưu tiên 4. Bỏ qua các giá trị âm.
--batch_cpu_scheduling
Sử dụng tính năng lập lịch CPU batch
cho Bazel. Chính sách này hữu ích cho
tải công việc không mang tính tương tác, nhưng không muốn giảm giá trị tốt của chúng.
Hãy xem "man 2 sched_setscheduler". Chính sách này có thể giúp cải thiện hệ thống
làm tăng thông lượng Bazel.
Tuỳ chọn khác
--[no]announce_rc
Kiểm soát việc Bazel có thông báo các tuỳ chọn lệnh được đọc từ tệp bazelrc hay không khi khởi động. (Các lựa chọn khởi động được thông báo vô điều kiện.)
--color (yes|no|auto)
Tuỳ chọn này xác định việc Bazel có dùng màu để làm nổi bật hay không đầu ra của mã đó trên màn hình.
Nếu bạn đặt tuỳ chọn này thành yes
, thì đầu ra màu sẽ bật.
Nếu bạn đặt tuỳ chọn này thành auto
, thì Bazel sẽ chỉ sử dụng đầu ra màu nếu
đầu ra đang được gửi đến thiết bị đầu cuối và biến môi trường TERM
được đặt thành một giá trị không phải là dumb
, emacs
hoặc xterm-mono
.
Nếu bạn đặt tuỳ chọn này thành no
, thì đầu ra màu sẽ bị tắt,
bất kể đầu ra có đi đến thiết bị đầu cuối hay không và
cài đặt biến môi trường TERM.
--config=name
Chọn mục cấu hình bổ sung trong
các tệp rc; cho command
hiện tại,
nó cũng lấy các tuỳ chọn từ command:name
nếu có một phần như vậy. Có thể
được chỉ định nhiều lần để thêm cờ từ một số phần cấu hình. Phần mở rộng có thể tham chiếu đến
định nghĩa (ví dụ: có thể mở rộng theo chuỗi).
--curses (yes|no|auto)
Tuỳ chọn này xác định xem Bazel có sử dụng các chế độ điều khiển con trỏ hay không
trong đầu ra màn hình. Điều này dẫn đến ít dữ liệu cuộn hơn và
luồng đầu ra nhỏ gọn, dễ đọc của Bazel. Tính năng này hoạt động hiệu quả với
--color
.
Nếu bạn đặt tuỳ chọn này thành yes
, thì tính năng sử dụng điều khiển con trỏ sẽ được bật.
Nếu bạn đặt tuỳ chọn này thành no
, thì tính năng sử dụng điều khiển con trỏ sẽ bị tắt.
Nếu bạn đặt tùy chọn này thành auto
, thì việc sử dụng điều khiển con trỏ sẽ
bật trong các điều kiện tương tự như của --color=auto
.
--[no]show_timestamps
Nếu được chỉ định, dấu thời gian sẽ được thêm vào mỗi thông báo do Bazel chỉ định thời điểm thông báo được hiển thị.