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)
Các 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): Một bản sao phiên bản của tệp nhị phân.strip -g
được chạy trên tệp nhị phân để xoá gỡ lỗi . Các tùy chọn dải bổ sung có thể được cung cấp trên dòng lệnh bằng cách sử dụng--stripopt=-foo
. Kết quả này chỉ được tạo khi có yêu cầu rõ ràng.name.dwp
(chỉ tạo nếu được yêu cầu rõ ràng): Nếu Đã bật Fission: một bản 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: an tệp trống.
Đối số
Thuộc tính | |
---|---|
name |
Tên duy nhất cho mục tiêu này. |
deps
|
Các lựa chọn này có thể là |
srcs
|
Tất cả tệp Tệp Tất cả Nếu tên quy tắc nằm trong
Loại tệp
...và bất kỳ quy tắc nào tạo ra các tệp đó. Các tiện ích 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 mục tiêu nhị phân. |
copts
|
Mỗi chuỗi trong thuộc tính này được thêm theo thứ tự nhất định vào
Nếu gói khai báo tính năng này
|
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 quy tắc đó. Hãy thật cẩn thận vì việc này có thể
có ảnh hưởng sâu rộng. Khi nghi ngờ, hãy thêm giá trị định nghĩa vào
local_defines .
|
includes
|
Đối với sự thay thế "Tạo biến".
Mỗi chuỗi được thêm vào trước Bạn phải thêm tiêu đề vào các tệp src hoặc hdr, nếu không, các tiêu đề này sẽ không dành cho các phần phụ thuộc khi quá trình biên dịch được đặt trong hộp cát (mặc định). |
linkopts
|
LINKOPTS trước
liên kết mục tiêu nhị phân.
Mỗi phần tử của danh sách này mà không bắt đầu bằng |
linkshared
|
linkshared=True vào quy tắc của bạn. Theo mặc định
tuỳ chọn này đang tắt.
Sự hiện diện của cờ này có nghĩa là hoạt động liên kết sẽ diễn ra với cờ
Nếu bạn chỉ định cả |
linkstatic
|
cc_binary và
cc_test : liên kết tệp nhị phân ở dạng tĩnh
. Đối với cc_library.linkstatic : xem bên dưới.
Theo mặc định, tuỳ chọn này được bật cho
Nếu được bật và đây là tệp nhị phân hoặc thử nghiệm, tuỳ chọn này sẽ yêu cầu công cụ bản dựng liên kết trong
Có thực sự ba cách khác nhau để 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 phép cho các thành viên phụ thuộc.
|
malloc
|
Theo mặc định, các tệp nhị phân C++ được liên kết với |
nocopts
|
COPTS nào có trước đó khớp với biểu thức chính quy này
(bao gồm các giá trị được chỉ định rõ ràng trong thuộc tính copts của quy tắc) sẽ bị xóa khỏi
COPTS để 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 đã đóng dấu không được tạo lại trừ phi các phần phụ thuộc của chúng thay đổi. |
win_def_file
|
Bạn chỉ nên sử 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 mã này để xuất các biểu tượng trong khi 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, )
cc_import( name = "mylib", hdrs = ["mylib.h"], shared_library = "libmylib.so", )
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", )
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, )
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, )
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 duy nhất cho mục tiêu này. |
hdrs
|
|
alwayslink
|
Nếu Alwayslink không hoạt động với VS 2017 trên Windows, đó là do lỗi vấn đề đã biết, vui lòng nâng cấp phiên bản VS 2017 của bạn lên phiên bản mới nhất. |
interface_library
|
Loại tệp được phép:
|
shared_library
|
Loại tệp được phép:
|
static_library
|
Loại tệp được phép:
|
system_provided
|
interface_library và
shared_library phải trống.
|
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 vào tiêu đề
Bạn phải khai báo tất cả tệp tiêu đề dùng trong bản dựng trong hdrs
hoặc
srcs
/cc_*
quy tắc. Yêu cầu này được thực thi.
Đối với quy tắc cc_library
, tiêu đề trong hdrs
bao gồm giao diện công khai của
thư viện và có thể được đưa trực tiếp vào cả hai tệp trong hdrs
và
srcs
của chính thư viện cũng như từ các tệp trong hdrs
và
srcs
/cc_*
quy tắc liệt kê thư viện trong deps
tương ứng.
Chỉ được đưa trực tiếp 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 xem có đặt tiêu đề vào
hdrs
hoặc srcs
, bạn nên hỏi xem bạn có muốn sử dụng thư viện này không
trực tiếp đưa dữ liệu đó vào. Đây gần như là một quyết định 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 được xuất, vì vậy, chúng
cũng không có thuộc tính hdrs
. Tất cả tiêu đề thuộc về tệp nhị phân hoặc mã kiểm thử
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"], )
Những nội dung được phép đưa vào trực tiếp trong ví dụ này được liệt kê trong bảng dưới đây. Ví dụ:
foo.cc
được phép trực tiếp đưa foo.h
và bar.h
vào, nhưng
chứ không phải baz.h
.
Đang bao gồm tệp | Các trang được phép đưa vào |
---|---|
foo.h | bar.h |
foo.cc | foo.h bar.h |
bar.h | bar-impl.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 |
Quy tắc kiểm tra việc đưa vào chỉ áp dụng cho phương thức trực tiếp
bao gồm. Trong ví dụ trên, foo.cc
được phép
bao gồm bar.h
, có thể bao gồm baz.h
, trong đó
được phép rẽ để thêm baz-impl.h
. Về mặt kỹ thuật,
quá trình biên dịch tệp .cc
có thể bao gồm bắc cầu mọi tiêu đề
trong hdrs
hoặc srcs
trong
bất kỳ cc_library
nào trong đường đóng deps
bắc cầu. Trong
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ó
được phép, bạn phải thêm baz
vào deps
trong tổng số foo
.
Rất tiếc, Bazel hiện không thể phân biệt giữa trực tiếp và bắc cầu
nên tính năng này không thể phát hiện các trường hợp lỗi trong đó một tệp có chứa
mà 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ụ nêu trên về foo.cc
trực tiếp
bao gồm baz.h
. Đây là nội dung bất hợp pháp vì foo
không phụ thuộc trực tiếp vào baz
. Hiện không xảy ra lỗi nào
trong trường hợp đó, nhưng sau này chúng tôi có thể thêm chức năng kiểm tra lỗi đó.
Đối số
Thuộc tính | |
---|---|
name |
Tên duy nhất cho mục tiêu này. |
deps
|
Các lựa chọn này có thể là |
srcs
|
Tất cả tệp Tệp Tất cả Nếu tên quy tắc nằm trong
Loại tệp
...và bất kỳ quy tắc nào tạo ra các tệp đó. Các tiện ích 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í được ưu tiên dùng để khai báo tệp tiêu đề
mô tả giao diện cho thư viện. Các tiêu đề này sẽ được tạo
có thể đư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.
Tiêu đề không dành cho ứng dụng khách của thư viện này phải được
được liệt kê trong thuộc tính |
alwayslink
|
srcs , ngay cả khi một số tệp không chứa ký hiệu nào được tệp nhị phân tham chiếu.
Điều này rất 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, ví dụ: nếu 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 Alwayslink không hoạt động với VS 2017 trên Windows, đó là do lỗi vấn đề đã biết, vui lòng nâng cấp phiên bản VS 2017 của bạn 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 theo thứ tự nhất định vào
Nếu gói khai báo tính năng này
|
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 quy tắc đó. Hãy thật cẩn thận vì việc này có thể
có ảnh hưởng sâu rộng. Khi nghi ngờ, hãy thêm giá trị định nghĩa vào
local_defines .
|
implementation_deps
|
deps , tiêu đề và bao gồm đường dẫn của các thư viện này (cũng như tất cả các đường dẫn
Phần phụ thuộc bắc cầu) chỉ được dùng để biên dịch thư viện này chứ không phải các thư viện
phụ thuộc vào mã đó. Các thư viện được chỉ định với implementation_deps vẫn được liên kết trong
các 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_ libraries và được bảo vệ bằng cờ
|
include_prefix
|
Khi đặt chính sách này, bạn có thể truy cập được các tiêu đề trong thuộc tính Tiền tố trong thuộc tính |
includes
|
Đối với sự thay thế "Tạo biến".
Mỗi chuỗi được thêm vào trước Bạn phải thêm tiêu đề vào các tệp src hoặc hdr, nếu không, các tiêu đề này sẽ không dành cho các phần phụ thuộc khi quá trình biên dịch được đặt trong hộp cát (mặc định). |
linkopts
|
LINKOPTS trước
liên kết mục tiêu nhị phân.
Mỗi phần tử của danh sách này mà không bắt đầu bằng |
linkstamp
|
base .
|
linkstatic
|
cc_binary và
cc_test : liên kết tệp nhị phân ở dạng tĩnh
. Đối với cc_library.linkstatic : xem bên dưới.
Theo mặc định, tuỳ chọn này được bật cho
Nếu được bật và đây là tệp nhị phân hoặc thử nghiệm, tuỳ chọn này sẽ yêu cầu công cụ bản dựng liên kết trong
Có thực sự ba cách khác nhau để 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 phép cho các thành viên phụ thuộc.
|
nocopts
|
COPTS nào có trước đó khớp với biểu thức chính quy này
(bao gồm các giá trị được chỉ định rõ ràng trong thuộc tính copts của quy tắc) sẽ bị xóa khỏi
COPTS để 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 đặt chính sách này, bạn có thể truy cập được các tiêu đề trong thuộc tính Nếu đó là đường dẫn tương đối, thì đường dẫn đó được coi là đường dẫn tương đối theo gói. Nếu giá trị là tuyệt đối, nó được hiểu là một đường dẫn tương đối liên quan đến kho lưu trữ. Tiền tố trong thuộc tính |
textual_hdrs
|
Đây là vị trí để khai báo tệp tiêu đề không thể tự biên dịch; tức là chúng luôn cần được đưa vào bằng văn bản bởi các tệp nguồn khác để tạo phiên bản hợp lệ . |
win_def_file
|
Bạn chỉ nên sử 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 mã này để xuất các biểu tượng trong khi 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 các 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 duy nhất 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 cấu hình gợi ý tìm nạp trước FDO trong không gian làm việc hoặc tại một giá trị được chỉ định đường dẫn tuyệt đối. 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 duy nhất 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)
Biểu thị một cấu hình FDO trong không gian làm việc hoặc tại một đườ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 duy nhất 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á Propeller 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 duy nhất 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 duy nhất cho mục tiêu này. |
deps
|
Các lựa chọn này có thể là |
srcs
|
Tất cả tệp Tệp Tất cả Nếu tên quy tắc nằm trong
Loại tệp
...và bất kỳ quy tắc nào tạo ra các tệp đó. Các tiện ích 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 mục tiêu nhị phân. |
copts
|
Mỗi chuỗi trong thuộc tính này được thêm theo thứ tự nhất định vào
Nếu gói khai báo tính năng này
|
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 quy tắc đó. Hãy thật cẩn thận vì việc này có thể
có ảnh hưởng sâu rộng. Khi nghi ngờ, hãy thêm giá trị định nghĩa vào
local_defines .
|
includes
|
Đối với sự thay thế "Tạo biến".
Mỗi chuỗi được thêm vào trước Bạn phải thêm tiêu đề vào các tệp src hoặc hdr, nếu không, các tiêu đề này sẽ không dành cho các phần phụ thuộc khi quá trình biên dịch được đặt trong hộp cát (mặc định). |
linkopts
|
LINKOPTS trước
liên kết mục tiêu nhị phân.
Mỗi phần tử của danh sách này mà không bắt đầu bằng |
linkstatic
|
cc_binary và
cc_test : liên kết tệp nhị phân ở dạng tĩnh
. Đối với cc_library.linkstatic : xem bên dưới.
Theo mặc định, tuỳ chọn này được bật cho
Nếu được bật và đây là tệp nhị phân hoặc thử nghiệm, tuỳ chọn này sẽ yêu cầu công cụ bản dựng liên kết trong
Có thực sự ba cách khác nhau để 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 phép cho các thành viên phụ thuộc.
|
malloc
|
Theo mặc định, các tệp nhị phân C++ được liên kết với |
nocopts
|
COPTS nào có trước đó khớp với biểu thức chính quy này
(bao gồm các giá trị được chỉ định rõ ràng trong thuộc tính copts của quy tắc) sẽ bị xóa khỏi
COPTS để 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 đã đóng dấu không được tạo lại trừ phi các phần phụ thuộc của chúng thay đổi. |
win_def_file
|
Bạn chỉ nên sử 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 mã này để xuất các biểu tượng trong khi 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 thao tác C++. Việc này được thực hiện bằng
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à thường gặp nhất là các nhóm tệp sao chép tất cả các tệp được yêu cầu. -
Tạo dòng lệnh chính xác cho các thao tác C++. Việc này được thực hiện bằng
Nhà cung cấp
CcToolchainConfigInfo
(thông tin chi tiết như bên dưới).
Sử dụng thuộc tính toolchain_config
để định cấu hình chuỗi công cụ C++.
Xem thêm
trang
để sử dụng cấu hình chuỗi công cụ C++ chi tiết và tài liệu lựa chọn chuỗi công cụ.
Sử dụng tags = ["manual"]
để ngăn hoạt động tạo và định cấu hình chuỗi công cụ
không cần thiết khi gọi bazel build //...
Đối số
Thuộc tính | |
---|---|
name |
Tên duy nhất cho mục tiêu này. |
all_files
|
all_files là 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ụ: quá trình biên dịch linkstamp), cả hai đều phải được biên dịch
và tệp đường liên kết, nên sẽ cần all_files ).
Đây là nội dung trong |
ar_files
|
Thu thập tất cả cấu phần phần mềm cc_toolchain cần thiết để lưu trữ các thao tác. |
as_files
|
Thu thập tất cả cấu phần phần mềm cc_toolchain cần thiết cho các thao tác tập hợp. |
compiler
|
toolchain_identifier . Không cần dùng đến
sau đó
Di chuyển CROSSTOOL sang Starlark
và sẽ bị xoá trước
#7075.
Khi bạn đặt chính sách này, giá trị này sẽ được dùng để lựa chọn crosstool_config.toolchain. Sẽ mất khoảng thời gian ưu tiên hơn tuỳ chọn --cpu Bazel. |
compiler_files
|
|
compiler_files_without_includes
|
|
coverage_files
|
|
cpu
|
Khi bạn đặt chính sách này, giá trị này sẽ được dùng để lựa chọn crosstool_config.toolchain. Sẽ mất khoảng thời gian ưu tiên hơn tuỳ chọn --cpu Bazel. |
dwp_files
|
|
dynamic_runtime_lib
|
Giá trị này sẽ được dùng khi thuộc tính "static_link_cpp_runtimes" đã bật và chúng tôi đang liên kết một cách linh động. |
exec_transition_for_inputs
|
|
libc_top
|
|
linker_files
|
|
module_map
|
|
objcopy_files
|
|
static_runtime_lib
|
Giá trị này sẽ được dùng khi thuộc tính "static_link_cpp_runtimes" đã bật và chúng tôi đang liên kết 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 lựa chọn
--cpu
và--compiler
được truyền đến Bazel.
Xem thêm trang để sử dụng cấu hình chuỗi công cụ C++ chi tiết và tài liệu lựa chọn chuỗi công cụ.
Đối số
Thuộc tính | |
---|---|
name |
Tên duy nhất cho mục tiêu này. |
toolchains
|
cc_toolchain . "<cpu>" sẽ được dùng khi chỉ --cpu
được chuyển đến Bazel và "<cpu>|<compiler>" sẽ được sử 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", }, ) |