C++ dan Bazel

Laporkan masalah Lihat sumber

Halaman ini berisi referensi yang membantu Anda menggunakan Bazel dengan project C++. Dokumen ini terhubung ke tutorial, aturan build, dan informasi lain khusus untuk mem-build project C++ dengan Bazel.

Bekerja dengan Bazel

Referensi berikut akan membantu Anda bekerja dengan Bazel pada project C++:

Praktik terbaik

Selain praktik terbaik umum Bazel, berikut praktik terbaik khusus untuk project C++.

BANGUN file

Ikuti panduan di bawah ini saat membuat file BUILD:

  • Setiap file BUILD harus berisi satu target aturan cc_library per unit kompilasi di direktori.

  • Anda harus melakukan perincian library C++ sebanyak mungkin untuk memaksimalkan inkrementalitas dan memparalelkan build.

  • Jika ada file sumber tunggal di srcs, beri nama library dengan nama file C++ tersebut. Library ini harus berisi file C++, file header apa pun yang cocok, dan dependensi langsung library. Contoh:

    cc_library(
        name = "mylib",
        srcs = ["mylib.cc"],
        hdrs = ["mylib.h"],
        deps = [":lower-level-lib"]
    )
    
  • Gunakan satu target aturan cc_test per target cc_library dalam file. Beri nama [library-name]_test target dan file sumber [library-name]_test.cc. Misalnya, target pengujian untuk target library mylib yang ditampilkan di atas akan terlihat seperti ini:

    cc_test(
        name = "mylib_test",
        srcs = ["mylib_test.cc"],
        deps = [":mylib"]
    )
    

Sertakan jalur

Ikuti panduan berikut untuk jalur penyertaan:

  • Buat semua jalur penyertaan relatif terhadap direktori Workspace.

  • Gunakan tanda petik (#include "foo/bar/baz.h") untuk header non-sistem, bukan tanda kurung sudut (#include <foo/bar/baz.h>).

  • Hindari penggunaan pintasan direktori UNIX, seperti . (direktori saat ini) atau .. (direktori induk).

  • Untuk kode lama atau third_party yang memerlukan penyertaan titik di luar repositori project, seperti repositori eksternal yang menyertakan penambahan awalan, gunakan argumen include_prefix dan strip_include_prefix pada target aturan cc_library.