C++ và Bazel

Báo cáo vấn đề Xem nguồn Hằng đêm · 7,3 · 7.2 · 7.1 · 7 · 6,5

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++:

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ột cc_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êu cc_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ện mylib 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ả đườ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ụng include_prefixstrip_include_prefix đối số trên mục tiêu quy tắc cc_library.