Quy tắc
- cc_binary
- cc_import
- cc_library
- cc_proto_library
- fdo_prefetch_hints
- fdo_profile
- propeller_optimize
- cc_test
- cc_toolchain
- cc_toolchain_suite
cc_binary
cc_binary(name, deps, srcs, data, additional_linker_inputs, args, compatible_with, copts, defines, deprecation, distribs, env, exec_compatible_with, exec_properties, features, includes, licenses, linkopts, linkshared, linkstatic, local_defines, malloc, nocopts, output_licenses, restricted_to, stamp, tags, target_compatible_with, testonly, toolchains, visibility, win_def_file)
Mục tiêu đầu ra ngầm ẩn
name.stripped
(chỉ được tạo nếu có yêu cầu rõ ràng): Phiên bản đã loại bỏ của tệp nhị phân.strip -g
được chạy trên tệp nhị phân để xoá các biểu tượng gỡ lỗi. Bạn có thể cung cấp thêm các tuỳ chọn dải trên dòng lệnh bằng--stripopt=-foo
. Kết quả này chỉ được tạo khi có yêu cầu rõ ràng.name.dwp
(chỉ được tạo nếu được yêu cầu rõ ràng): Nếu bật tính năng Phân hạch: một tệp gói thông tin gỡ lỗi phù hợp để gỡ lỗi các tệp nhị phân được triển khai từ xa. Trường hợp còn lại: một tệp trống.
Đối số
Thuộc tính | |
---|---|
name |
Tên dành riêng cho mục tiêu này. |
deps
|
Đây có thể là mục tiêu |
srcs
|
Tất cả các tệp Tệp Mọi tệp Nếu tên của một quy tắc nằm trong
Các loại tệp
...và bất kỳ quy tắc nào tạo ra các tệp đó. Các phần mở rộng khác nhau biểu thị các ngôn ngữ lập trình khác nhau theo quy ước gcc. |
additional_linker_inputs
|
Ví dụ: bạn có thể cung cấp các tệp Windows .res đã biên dịch tại đây để nhúng vào đích nhị phân. |
copts
|
Mỗi chuỗi trong thuộc tính này được thêm vào
Nếu gói khai báo tính năng
|
defines
|
-D và thêm vào dòng lệnh biên dịch vào mục tiêu này, cũng như mọi quy tắc phụ thuộc vào mục tiêu này. Hãy hết sức cẩn trọng vì việc này có thể
gây ra những ảnh hưởng rất lớn. Khi không chắc chắn, hãy thêm các giá trị xác định vào local_defines .
|
includes
|
Phải thay thế "Tạo biến".
Mỗi chuỗi sẽ được thêm vào trước Bạn phải thêm tiêu đề vào srcs hoặc hdr, nếu không, các tiêu đề sẽ không xuất hiện cho các quy tắc phụ thuộc khi biên dịch được đặt trong hộp cát (mặc định). |
linkopts
|
LINKOPTS trước khi liên kết mục tiêu nhị phân.
Mỗi phần tử của danh sách này không bắt đầu bằng |
linkshared
|
linkshared=True vào quy tắc của bạn. Tuỳ chọn này được tắt theo mặc định.
Sự hiện diện của cờ này có nghĩa là việc liên kết xảy ra với cờ
Nếu chỉ định cả |
linkstatic
|
cc_binary và cc_test : hãy liên kết tệp nhị phân ở chế độ tĩnh. Đối với cc_library.linkstatic : xem bên dưới.
Theo mặc định, tuỳ chọn này sẽ bật đối với
Nếu được bật và đây là một tệp nhị phân hoặc kiểm thử, tuỳ chọn này sẽ yêu cầu công cụ xây dựng liên kết trong Thực ra, có ba cách để liên kết một tệp thực thi:
Thuộc tính
Nếu là |
local_defines
|
-D và thêm vào dòng lệnh biên dịch cho mục tiêu này, nhưng không được thêm vào các phần phụ thuộc của mục tiêu này.
|
malloc
|
Theo mặc định, các tệp nhị phân C++ được liên kết với |
nocopts
|
COPTS có sẵn khớp với biểu thức chính quy này (bao gồm cả các giá trị được chỉ định rõ ràng trong thuộc tính copts của quy tắc) sẽ bị xoá khỏi COPTS nhằm mục đích biên dịch quy tắc này.
Thuộc tính này hiếm khi cần thiết.
|
stamp
|
Tệp nhị phân được đóng dấu không được tạo lại trừ phi phần phụ thuộc của chúng thay đổi. |
win_def_file
|
Bạn chỉ nên dùng thuộc tính này khi Windows là nền tảng mục tiêu. Bạn có thể dùng tệp này để xuất các biểu tượng trong quá trình liên kết thư viện chia sẻ. |
cc_import
cc_import(name, data, hdrs, alwayslink, compatible_with, deprecation, distribs, features, interface_library, licenses, restricted_to, shared_library, static_library, system_provided, tags, target_compatible_with, testonly, visibility)
Các quy tắc cc_import
cho phép người dùng nhập các thư viện C/C++ được biên dịch trước.
Sau đây là các trường hợp sử dụng điển hình:
1. Liên kết thư viện tĩnh
cc_import( name = "mylib", hdrs = ["mylib.h"], static_library = "libmylib.a", # If alwayslink is turned on, # libmylib.a will be forcely linked into any binary that depends on it. # alwayslink = 1, )2. Liên kết thư viện dùng chung (Unix)
cc_import( name = "mylib", hdrs = ["mylib.h"], shared_library = "libmylib.so", )3. Liên kết thư viện dùng chung với thư viện giao diện (Windows)
cc_import( name = "mylib", hdrs = ["mylib.h"], # mylib.lib is a import library for mylib.dll which will be passed to linker interface_library = "mylib.lib", # mylib.dll will be available for runtime shared_library = "mylib.dll", )4. Liên kết thư viện dùng chung với
system_provided=True
(Windows)
cc_import( name = "mylib", hdrs = ["mylib.h"], # mylib.lib is an import library for mylib.dll which will be passed to linker interface_library = "mylib.lib", # mylib.dll is provided by system environment, for example it can be found in PATH. # This indicates that Bazel is not responsible for making mylib.dll available. system_provided = 1, )5. Liên kết đến thư viện tĩnh hoặc thư viện chia sẻ
Trên Unix:
cc_import( name = "mylib", hdrs = ["mylib.h"], static_library = "libmylib.a", shared_library = "libmylib.so", ) # first will link to libmylib.a cc_binary( name = "first", srcs = ["first.cc"], deps = [":mylib"], linkstatic = 1, # default value ) # second will link to libmylib.so cc_binary( name = "second", srcs = ["second.cc"], deps = [":mylib"], linkstatic = 0, )Trên Windows:
cc_import( name = "mylib", hdrs = ["mylib.h"], static_library = "libmylib.lib", # A normal static library interface_library = "mylib.lib", # An import library for mylib.dll shared_library = "mylib.dll", ) # first will link to libmylib.lib cc_binary( name = "first", srcs = ["first.cc"], deps = [":mylib"], linkstatic = 1, # default value ) # second will link to mylib.dll through mylib.lib cc_binary( name = "second", srcs = ["second.cc"], deps = [":mylib"], linkstatic = 0, )
Đối số
Thuộc tính | |
---|---|
name |
Tên dành riêng cho mục tiêu này. |
hdrs
|
|
alwayslink
|
Nếu đường liên kết luôn không hoạt động với VS 2017 trên Windows, nguyên nhân là do vấn đề đã biết, vui lòng nâng cấp VS 2017 lên phiên bản mới nhất. |
interface_library
|
Các loại tệp được phép:
|
shared_library
|
Các loại tệp được phép:
|
static_library
|
Các loại tệp được phép:
|
system_provided
|
interface_library và để trống shared_library .
|
cc_library
cc_library(name, deps, srcs, data, hdrs, alwayslink, compatible_with, copts, defines, deprecation, distribs, exec_compatible_with, exec_properties, features, implementation_deps, include_prefix, includes, licenses, linkopts, linkstamp, linkstatic, local_defines, nocopts, restricted_to, strip_include_prefix, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, win_def_file)
Kiểm tra việc đưa tiêu đề vào
Mọi tệp tiêu đề dùng trong bản dựng đều phải được khai báo trong hdrs
hoặc srcs
của quy tắc cc_*
. Yêu cầu này đã được thực thi.
Đối với các quy tắc cc_library
, tiêu đề trong hdrs
bao gồm giao diện công khai của thư viện, có thể được đưa trực tiếp vào cả các tệp trong hdrs
và srcs
trong chính thư viện cũng như từ các tệp trong hdrs
và srcs
của các quy tắc cc_*
liệt kê thư viện trong deps
.
Bạn chỉ được đưa trực tiếp các tiêu đề trong srcs
vào các tệp trong hdrs
và srcs
của chính thư viện. Khi quyết định đặt tiêu đề vào hdrs
hay srcs
, bạn nên hỏi xem bạn muốn người dùng sử dụng thư viện này có thể trực tiếp đưa tiêu đề vào hay không. Đây là quyết định gần giống như giữa chế độ hiển thị public
và private
trong các ngôn ngữ lập trình.
Các quy tắc cc_binary
và cc_test
không có giao diện để xuất nên cũng không có thuộc tính hdrs
. Tất cả tiêu đề thuộc tệp nhị phân hoặc tệp kiểm thử trực tiếp phải được liệt kê trong srcs
.
Để minh hoạ các quy tắc này, hãy xem ví dụ sau.
cc_binary( name = "foo", srcs = [ "foo.cc", "foo.h", ], deps = [":bar"], ) cc_library( name = "bar", srcs = [ "bar.cc", "bar-impl.h", ], hdrs = ["bar.h"], deps = [":baz"], ) cc_library( name = "baz", srcs = [ "baz.cc", "baz-impl.h", ], hdrs = ["baz.h"], )
Trong ví dụ này, các trang tham gia trực tiếp được phép sử dụng được liệt kê trong bảng dưới đây. Ví dụ: foo.cc
được phép trực tiếp thêm foo.h
và bar.h
, nhưng không được phép trực tiếp thêm baz.h
.
Đang bao gồm tệp | Bao gồm được phép |
---|---|
foo.h | bar.h |
foo.cc | foo.h bar.h |
bar.h | bar-hệ.h baz.h |
bar-impl.h | bar.h baz.h |
bar.cc | bar.h bar-impl.h baz.h |
baz.h | baz-impl.h |
baz-impl.h | baz.h |
baz.cc | baz.h baz-impl.h |
Các quy tắc kiểm tra việc đưa vào chỉ áp dụng cho các trang đưa vào trực tiếp. Trong ví dụ trên, foo.cc
được phép đưa vào bar.h
, có thể bao gồm baz.h
, nhưng lại được phép đưa baz-impl.h
vào. Về mặt kỹ thuật, việc biên dịch tệp .cc
có thể bắc cầu mọi tệp tiêu đề trong hdrs
hoặc srcs
vào bất kỳ cc_library
nào trong phần đóng deps
bắc cầu. Trong trường hợp này, trình biên dịch có thể đọc baz.h
và baz-impl.h
khi biên dịch foo.cc
, nhưng foo.cc
không được chứa #include "baz.h"
. Để được phép, baz
phải được thêm vào deps
của foo
.
Rất tiếc, Bazel hiện không thể phân biệt được bao gồm trực tiếp và bắc cầu, vì vậy, không thể phát hiện các trường hợp lỗi trong đó một tệp trực tiếp chứa một tiêu đề chỉ được phép đưa vào theo cách bắc cầu. Ví dụ: Bazel sẽ không khiếu nại nếu trong ví dụ trên, foo.cc
trực tiếp bao gồm baz.h
. Điều này là bất hợp pháp vì foo
không phụ thuộc trực tiếp vào baz
. Hiện tại, không có lỗi nào được tạo ra trong trường hợp đó, nhưng hoạt động kiểm tra lỗi đó có thể sẽ được thêm vào trong tương lai.
Đối số
Thuộc tính | |
---|---|
name |
Tên dành riêng cho mục tiêu này. |
deps
|
Đây có thể là mục tiêu |
srcs
|
Tất cả các tệp Tệp Mọi tệp Nếu tên của một quy tắc nằm trong
Các loại tệp
...và bất kỳ quy tắc nào tạo ra các tệp đó. Các phần mở rộng khác nhau biểu thị các ngôn ngữ lập trình khác nhau theo quy ước gcc. |
hdrs
|
Đây là vị trí nên được ưu tiên để khai báo các tệp tiêu đề mô tả giao diện cho thư viện. Các tiêu đề này sẽ được cung cấp để đưa vào theo các nguồn trong quy tắc này hoặc trong các quy tắc phụ thuộc.
Các tiêu đề không phải do ứng dụng của thư viện này đưa vào nên được liệt kê trong thuộc tính |
alwayslink
|
srcs , ngay cả khi một số tệp không chứa các ký hiệu mà tệp nhị phân tham chiếu.
Điều này sẽ hữu ích nếu mã của bạn không được gọi rõ ràng bằng mã trong tệp nhị phân, chẳng hạn như khi mã của bạn đăng ký nhận một số lệnh gọi lại do một số dịch vụ cung cấp.
Nếu đường liên kết luôn không hoạt động với VS 2017 trên Windows, nguyên nhân là do vấn đề đã biết, vui lòng nâng cấp VS 2017 lên phiên bản mới nhất. |
copts
|
Mỗi chuỗi trong thuộc tính này được thêm vào
Nếu gói khai báo tính năng
|
defines
|
-D và thêm vào dòng lệnh biên dịch vào mục tiêu này, cũng như mọi quy tắc phụ thuộc vào mục tiêu này. Hãy hết sức cẩn trọng vì việc này có thể
gây ra những ảnh hưởng rất lớn. Khi không chắc chắn, hãy thêm các giá trị xác định vào local_defines .
|
implementation_deps
|
deps , tiêu đề và đường dẫn của những thư viện này (và mọi phần phụ thuộc bắc cầu của thư viện) chỉ được dùng để biên dịch thư viện này và không dùng các thư viện phụ thuộc vào thư viện này. Các thư viện được chỉ định bằng implementation_deps vẫn được liên kết trong
những mục tiêu nhị phân phụ thuộc vào thư viện này.
Hiện tại, việc sử dụng chỉ giới hạn ở cc_library và được bảo vệ bằng cờ |
include_prefix
|
Khi đặt, tiêu đề trong thuộc tính Tiền tố trong thuộc tính |
includes
|
Phải thay thế "Tạo biến".
Mỗi chuỗi sẽ được thêm vào trước Bạn phải thêm tiêu đề vào srcs hoặc hdr, nếu không, các tiêu đề sẽ không xuất hiện cho các quy tắc phụ thuộc khi biên dịch được đặt trong hộp cát (mặc định). |
linkopts
|
LINKOPTS trước khi liên kết mục tiêu nhị phân.
Mỗi phần tử của danh sách này không bắt đầu bằng |
linkstamp
|
base .
|
linkstatic
|
cc_binary và cc_test : hãy liên kết tệp nhị phân ở chế độ tĩnh. Đối với cc_library.linkstatic : xem bên dưới.
Theo mặc định, tuỳ chọn này sẽ bật đối với
Nếu được bật và đây là một tệp nhị phân hoặc kiểm thử, tuỳ chọn này sẽ yêu cầu công cụ xây dựng liên kết trong Thực ra, có ba cách để liên kết một tệp thực thi:
Thuộc tính
Nếu là |
local_defines
|
-D và thêm vào dòng lệnh biên dịch cho mục tiêu này, nhưng không được thêm vào các phần phụ thuộc của mục tiêu này.
|
nocopts
|
COPTS có sẵn khớp với biểu thức chính quy này (bao gồm cả các giá trị được chỉ định rõ ràng trong thuộc tính copts của quy tắc) sẽ bị xoá khỏi COPTS nhằm mục đích biên dịch quy tắc này.
Thuộc tính này hiếm khi cần thiết.
|
strip_include_prefix
|
Khi được đặt, các tiêu đề trong thuộc tính Nếu đó là đường dẫn tương đối, thì đường dẫn đó được xem là đường dẫn tương đối theo gói. Nếu đó là giá trị tuyệt đối, thì URL đó được hiểu là đường dẫn tương đối với kho lưu trữ. Tiền tố trong thuộc tính |
textual_hdrs
|
Đây là nơi để khai báo các tệp tiêu đề không thể tự biên dịch; nghĩa là chúng luôn cần được các tệp nguồn khác đưa vào bằng văn bản để tạo mã hợp lệ. |
win_def_file
|
Bạn chỉ nên dùng thuộc tính này khi Windows là nền tảng mục tiêu. Bạn có thể dùng tệp này để xuất các biểu tượng trong quá trình liên kết thư viện chia sẻ. |
cc_proto_library
cc_proto_library(name, deps, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)
cc_proto_library
tạo mã C++ từ các tệp .proto
.
deps
phải trỏ đến quy tắc proto_library
.
Ví dụ:
cc_library( name = "lib", deps = [":foo_cc_proto"], ) cc_proto_library( name = "foo_cc_proto", deps = [":foo_proto"], ) proto_library( name = "foo_proto", )
Đối số
Thuộc tính | |
---|---|
name |
Tên dành riêng cho mục tiêu này. |
deps
|
proto_library để tạo mã C++.
|
fdo_prefetch_hints
fdo_prefetch_hints(name, compatible_with, deprecation, distribs, features, licenses, profile, restricted_to, tags, target_compatible_with, testonly, visibility)
Đại diện cho hồ sơ gợi ý tìm nạp trước FDO nằm trong không gian làm việc hoặc tại đường dẫn tuyệt đối được chỉ định. Ví dụ:
fdo_prefetch_hints( name = "hints", profile = "//path/to/hints:profile.afdo", ) fdo_profile( name = "hints_abs", absolute_path_profile = "/absolute/path/profile.afdo", )
Đối số
Thuộc tính | |
---|---|
name |
Tên dành riêng cho mục tiêu này. |
profile
|
|
fdo_profile
fdo_profile(name, absolute_path_profile, compatible_with, deprecation, distribs, features, licenses, profile, proto_profile, restricted_to, tags, target_compatible_with, testonly, visibility)
Đại diện cho hồ sơ FDO nằm trong không gian làm việc hoặc tại đường dẫn tuyệt đối được chỉ định. Ví dụ:
fdo_profile( name = "fdo", profile = "//path/to/fdo:profile.zip", ) fdo_profile( name = "fdo_abs", absolute_path_profile = "/absolute/path/profile.zip", )
Đối số
Thuộc tính | |
---|---|
name |
Tên dành riêng cho mục tiêu này. |
absolute_path_profile
|
|
profile
|
|
proto_profile
|
|
propeller_optimize
propeller_optimize(name, compatible_with, deprecation, distribs, features, ld_profile, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)
Đại diện cho một hồ sơ tối ưu hoá Cánh quạt trong không gian làm việc. Ví dụ:
propeller_optimize( name = "layout", cc_profile = "//path:cc_profile.txt", ld_profile = "//path:ld_profile.txt" ) propeller_optimize( name = "layout_absolute", absolute_cc_profile = "/absolute/cc_profile.txt", absolute_ld_profile = "/absolute/ld_profile.txt" )
Đối số
Thuộc tính | |
---|---|
name |
Tên dành riêng cho mục tiêu này. |
ld_profile
|
|
cc_test
cc_test(name, deps, srcs, data, additional_linker_inputs, args, compatible_with, copts, defines, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, includes, licenses, linkopts, linkstatic, local, local_defines, malloc, nocopts, restricted_to, shard_count, size, stamp, tags, target_compatible_with, testonly, timeout, toolchains, visibility, win_def_file)
Đối số
Thuộc tính | |
---|---|
name |
Tên dành riêng cho mục tiêu này. |
deps
|
Đây có thể là mục tiêu |
srcs
|
Tất cả các tệp Tệp Mọi tệp Nếu tên của một quy tắc nằm trong
Các loại tệp
...và bất kỳ quy tắc nào tạo ra các tệp đó. Các phần mở rộng khác nhau biểu thị các ngôn ngữ lập trình khác nhau theo quy ước gcc. |
additional_linker_inputs
|
Ví dụ: bạn có thể cung cấp các tệp Windows .res đã biên dịch tại đây để nhúng vào đích nhị phân. |
copts
|
Mỗi chuỗi trong thuộc tính này được thêm vào
Nếu gói khai báo tính năng
|
defines
|
-D và thêm vào dòng lệnh biên dịch vào mục tiêu này, cũng như mọi quy tắc phụ thuộc vào mục tiêu này. Hãy hết sức cẩn trọng vì việc này có thể
gây ra những ảnh hưởng rất lớn. Khi không chắc chắn, hãy thêm các giá trị xác định vào local_defines .
|
includes
|
Phải thay thế "Tạo biến".
Mỗi chuỗi sẽ được thêm vào trước Bạn phải thêm tiêu đề vào srcs hoặc hdr, nếu không, các tiêu đề sẽ không xuất hiện cho các quy tắc phụ thuộc khi biên dịch được đặt trong hộp cát (mặc định). |
linkopts
|
LINKOPTS trước khi liên kết mục tiêu nhị phân.
Mỗi phần tử của danh sách này không bắt đầu bằng |
linkstatic
|
cc_binary và cc_test : hãy liên kết tệp nhị phân ở chế độ tĩnh. Đối với cc_library.linkstatic : xem bên dưới.
Theo mặc định, tuỳ chọn này sẽ bật đối với
Nếu được bật và đây là một tệp nhị phân hoặc kiểm thử, tuỳ chọn này sẽ yêu cầu công cụ xây dựng liên kết trong Thực ra, có ba cách để liên kết một tệp thực thi:
Thuộc tính
Nếu là |
local_defines
|
-D và thêm vào dòng lệnh biên dịch cho mục tiêu này, nhưng không được thêm vào các phần phụ thuộc của mục tiêu này.
|
malloc
|
Theo mặc định, các tệp nhị phân C++ được liên kết với |
nocopts
|
COPTS có sẵn khớp với biểu thức chính quy này (bao gồm cả các giá trị được chỉ định rõ ràng trong thuộc tính copts của quy tắc) sẽ bị xoá khỏi COPTS nhằm mục đích biên dịch quy tắc này.
Thuộc tính này hiếm khi cần thiết.
|
stamp
|
Tệp nhị phân được đóng dấu không được tạo lại trừ phi phần phụ thuộc của chúng thay đổi. |
win_def_file
|
Bạn chỉ nên dùng thuộc tính này khi Windows là nền tảng mục tiêu. Bạn có thể dùng tệp này để xuất các biểu tượng trong quá trình liên kết thư viện chia sẻ. |
cc_toolchain
cc_toolchain(name, all_files, ar_files, as_files, compatible_with, compiler, compiler_files, compiler_files_without_includes, coverage_files, cpu, deprecation, distribs, dwp_files, dynamic_runtime_lib, exec_transition_for_inputs, features, libc_top, licenses, linker_files, module_map, objcopy_files, restricted_to, static_runtime_lib, strip_files, supports_header_parsing, supports_param_files, tags, target_compatible_with, testonly, toolchain_config, toolchain_identifier, visibility)
Đại diện cho một chuỗi công cụ C++.
Quy tắc này chịu trách nhiệm về:
-
Thu thập tất cả cấu phần phần mềm cần thiết để chạy các hành động C++. Việc này được thực hiện bởi các thuộc tính như
all_files
,compiler_files
,linker_files
hoặc các thuộc tính khác kết thúc bằng_files
). Đây là các nhóm tệp phổ biến nhất, bao gồm tất cả các tệp bắt buộc. -
Tạo dòng lệnh chính xác cho thao tác C++. Bạn có thể thực hiện việc này bằng cách sử dụng nhà cung cấp
CcToolchainConfigInfo
(thông tin chi tiết bên dưới).
Sử dụng thuộc tính toolchain_config
để định cấu hình chuỗi công cụ C++.
Ngoài ra, hãy xem
trang này
để biết cấu hình chuỗi công cụ C++ và tài liệu lựa chọn chuỗi công cụ chi tiết.
Sử dụng tags = ["manual"]
để ngăn việc tạo và định cấu hình chuỗi công cụ
một cách không cần thiết khi gọi bazel build //...
Đối số
Thuộc tính | |
---|---|
name |
Tên dành riêng cho mục tiêu này. |
all_files
|
all_files là một tập mẹ của tất cả các thuộc tính cung cấp cấu phần phần mềm khác (ví dụ: việc biên dịch linkstamp cần cả tệp biên dịch lẫn tệp liên kết, vì vậy cần có all_files ).
Đây là nội dung của |
ar_files
|
Tập hợp tất cả cấu phần phần mềm cc_toolchain cần thiết cho các hành động lưu trữ. |
as_files
|
Tập hợp tất cả cấu phần phần mềm cc_toolchain bắt buộc cho các thao tác tập hợp. |
compiler
|
toolchain_identifier . Tính năng này sẽ bị xoá
sau khi
di chuyển CROSSTOOL sang Starlark
và sẽ bị xoá vào
#7075.
Khi được đặt, thuộc tính này sẽ được dùng để thực hiện lựa chọn crosstool_config.toolchain. Chế độ này sẽ được ưu tiên hơn lựa chọn --cpu Bazel. |
compiler_files
|
|
compiler_files_without_includes
|
|
coverage_files
|
|
cpu
|
Khi được đặt, thuộc tính này sẽ được dùng để thực hiện lựa chọn crosstool_config.toolchain. Chế độ này sẽ được ưu tiên hơn lựa chọn --cpu Bazel. |
dwp_files
|
|
dynamic_runtime_lib
|
Chính sách này sẽ được sử dụng khi bạn bật tính năng "static_link_cpp_runtimes" và đang liên kết các phần phụ thuộc một cách linh động. |
exec_transition_for_inputs
|
|
libc_top
|
|
linker_files
|
|
module_map
|
|
objcopy_files
|
|
static_runtime_lib
|
Chính sách này sẽ được sử dụng khi bạn bật tính năng "static_link_cpp_runtimes" và đang liên kết các phần phụ thuộc theo cách tĩnh. |
strip_files
|
|
supports_header_parsing
|
|
supports_param_files
|
|
toolchain_config
|
cc_toolchain_config_info .
|
toolchain_identifier
|
Cho đến khi vấn đề #5380 được khắc phục, bạn nên liên kết |
cc_toolchain_suite
cc_toolchain_suite(name, compatible_with, deprecation, distribs, features, licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
Đại diện cho một tập hợp chuỗi công cụ C++.
Quy tắc này chịu trách nhiệm về:
- Thu thập tất cả chuỗi công cụ C++ có liên quan.
-
Chọn một chuỗi công cụ tuỳ thuộc vào các tuỳ chọn
--cpu
và--compiler
được truyền đến Bazel.
Ngoài ra, hãy xem trang này để biết cấu hình chuỗi công cụ C++ và tài liệu lựa chọn chuỗi công cụ chi tiết.
Đối số
Thuộc tính | |
---|---|
name |
Tên dành riêng cho mục tiêu này. |
toolchains
|
cc_toolchain . "<cpu>" sẽ được dùng khi chỉ truyền --cpu đến Bazel, còn "<cpu>|<compiler>" sẽ được dùng khi cả --cpu và --compiler được truyền đến Bazel. Ví dụ:
cc_toolchain_suite( name = "toolchain", toolchains = { "piii|gcc": ":my_cc_toolchain_for_piii_using_gcc", "piii": ":my_cc_toolchain_for_piii_using_default_compiler", }, ) |