Trang này chứa các tài nguyên giúp bạn sử dụng Bazel với các dự án C++. Quảng cáo này liên kết hướng dẫn, quy tắc xây dựng và các thông tin khác cụ thể về việc xây dựng C++ dự án của Bazel.
Làm việc với Bazel
Các tài nguyên sau sẽ giúp bạn xử lý Bazel trong các dự án C++:
- Hướng dẫn: Xây dựng dự án C++
- Các trường hợp sử dụng phổ biến trong C++
- Quy tắc C/C++
- Cấu hình chuỗi công cụ C++
- Hướng dẫn: Định cấu hình chuỗi công cụ C++
- Tích hợp với các quy tắc C++
Các phương pháp hay nhất
Ngoài các phương pháp hay nhất chung cho Bazel, dưới đây là dành riêng cho dự án C++.
XÂY DỰNG tệp
Hãy làm theo các nguyên tắc bên dưới khi tạo tệp BUILD:
Mỗi tệp
BUILD
phải chứa mộtcc_library
mục tiêu quy tắc cho mỗi đơn vị biên dịch trong thư mục.Bạn nên chi tiết hoá thư viện C++ của mình ở mức tối đa nhằm tăng tối đa mức độ gia tăng và tải song song bản dựng.
Nếu có một tệp nguồn duy nhất trong
srcs
, hãy đặt tên cho thư viện giống như tên của tệp C++ đó. Thư viện này phải chứa(các) tệp C++, bất kỳ tệp nào phù hợp (các) tệp tiêu đề và phần phụ thuộc trực tiếp của thư viện. Ví dụ:cc_library( name = "mylib", srcs = ["mylib.cc"], hdrs = ["mylib.h"], deps = [":lower-level-lib"] )
Sử dụng một mục tiêu quy tắc
cc_test
cho mỗi mục tiêucc_library
trong tệp. Đặt tên cho nhắm mục tiêu[library-name]_test
và tệp nguồn[library-name]_test.cc
. Ví dụ: mục tiêu kiểm thử cho mục tiêu thư việnmylib
như trình bày ở trên sẽ sẽ có dạng như sau:cc_test( name = "mylib_test", srcs = ["mylib_test.cc"], deps = [":mylib"] )
Bao gồm đường dẫn
Hãy làm theo các nguyên tắc sau để thêm đường dẫn:
Đặt tất cả các đường dẫn bao gồm tương ứng với thư mục không gian làm việc.
Sử dụng dấu ngoặc kép (
#include "foo/bar/baz.h"
) cho các tiêu đề không thuộc hệ thống, chứ không phải dấu ngoặc nhọn (#include <foo/bar/baz.h>
).Tránh sử dụng các lối tắt thư mục UNIX, chẳng hạn như
.
(thư mục hiện tại) hoặc..
(thư mục mẹ).Đối với mã cũ hoặc mã
third_party
yêu cầu phải trỏ ra ngoài kho lưu trữ dự án (chẳng hạn như kho lưu trữ bên ngoài) bao gồm yêu cầu phải có tiền tố, sử dụnginclude_prefix
vàstrip_include_prefix
đối số trên mục tiêu quy tắccc_library
.