Halaman ini berisi referensi yang membantu Anda menggunakan Bazel dengan project C++. Dokumen ini menautkan ke tutorial, aturan build, dan informasi lain yang khusus untuk membangun project C++ dengan Bazel.
Bekerja dengan Bazel
Referensi berikut akan membantu Anda menggunakan Bazel di project C++:
- Tutorial: Membangun project C++
- Kasus penggunaan umum C++
- Aturan C/C++
- Library Penting
- Konfigurasi toolchain C++
- Tutorial: Mengonfigurasi toolchain C++
- Mengintegrasikan dengan aturan C++
Praktik terbaik
Selain praktik terbaik Bazel umum, berikut adalah praktik terbaik khusus untuk project C++.
File BUILD
Ikuti panduan di bawah saat membuat file BUILD Anda:
- Setiap file - BUILDharus berisi satu target aturan- cc_libraryper unit kompilasi dalam direktori.
- Anda harus membagi library C++ menjadi bagian-bagian kecil sebanyak mungkin untuk memaksimalkan inkrementalitas dan memparalelkan build. 
- Jika ada satu file sumber di - srcs, beri nama library yang sama dengan nama file C++ tersebut. Library ini harus berisi file C++, file header 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_testper target- cc_librarydalam file. Beri nama target- [library-name]_testdan file sumber- [library-name]_test.cc. Misalnya, target pengujian untuk target library- mylibyang 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 include:
- Buat semua jalur include relatif terhadap direktori ruang kerja. 
- Gunakan include yang dikutip ( - #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 - third_partylama yang memerlukan penyertaan yang mengarah ke luar repositori project, seperti penyertaan repositori eksternal yang memerlukan awalan, gunakan argumen- include_prefixdan- strip_include_prefixpada target aturan- cc_library.
Fitur toolchain
Fitur opsional berikut dapat meningkatkan kebersihan project C++. Fitur ini dapat diaktifkan menggunakan
flag command line --features atau atribut features dari
aturan repo,
package, atau cc_*:
- Fitur parse_headersmembuat compiler C++ digunakan untuk mengurai (tetapi tidak mengompilasi) semua file header dalam target build dan dependensinya saat menggunakan flag--process_headers_in_dependencies. Hal ini dapat membantu mendeteksi masalah dalam library khusus header dan memastikan bahwa header bersifat mandiri dan tidak bergantung pada urutan penyertaannya.
- Fitur layering_checkmemastikan bahwa target hanya menyertakan header yang disediakan oleh dependensi langsungnya. Toolchain default mendukung fitur ini di Linux denganclangsebagai compiler.