Trang này chứa tài nguyên giúp bạn sử dụng Bazel với các dự án C++. Tài liệu này liên kết đến hướng dẫn, các quy tắc xây dựng và thông tin khác dành riêng cho việc xây dựng dự án C++ bằng Bazel.
Làm việc với Bazel
Các tài nguyên sau đây sẽ giúp bạn hợp tác với 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 của 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 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 hoá thư viện C++ của mình nhiều nhất có thể để tối đa hoá 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 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à các 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[library-name]_test
mục tiêu và tệp nguồn là[library-name]_test.cc
. Ví dụ: mục tiêu kiểm thử cho mục tiêu thư việnmylib
hiển thị ở 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 đối với đường dẫn bao gồm:
Đặt tất cả đường dẫn bao gồm cả đường dẫn tương ứng đến thư mục không gian làm việc.
Sử dụng dấu ngoặc kép bao gồm (
#include "foo/bar/baz.h"
) cho các tiêu đề không phải hệ thống, chứ không phải dấu ngoặc góc (#include <foo/bar/baz.h>
).Tránh sử dụng lối tắt cho 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
đòi hỏi trỏ bên ngoài kho lưu trữ dự án, chẳng hạn như kho lưu trữ bên ngoài cần có tiền tố, hãy sử dụng các đối sốinclude_prefix
vàstrip_include_prefix
trên mục tiêu quy tắccc_library
.