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++. Hướng dẫn này liên kết đến hướng dẫn, quy tắc xây dựng và các thông tin cụ thể khác về việc xây dựng các dự án C++ bằng 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 chung hay nhất về Bazel, dưới đây là các phương pháp hay nhất 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ột mục tiêu quy tắccc_library
cho mỗi đơn vị biên dịch trong thư mục.Bạn nên chi tiết nhất có thể thư viện C++ để 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++, mọi tệp tiêu đề phù hợp 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 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ẽ 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 bao hàm (
#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 đến 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ã
third_party
hoặc mã cũ đòi hỏi 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 tiền tố, hãy sử dụng đối sốinclude_prefix
vàstrip_include_prefix
trên mục tiêu quy tắccc_library
.