Halaman ini berisi referensi yang membantu Anda menggunakan Bazel dengan project C++. Halaman ini tertaut ke tutorial, aturan build, dan informasi lainnya yang khusus untuk mem-build project C++ dengan Bazel.
Menggunakan Bazel
Referensi berikut akan membantu Anda menggunakan Bazel pada project C++:
- Tutorial: Mem-build 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 praktik terbaik khusus untuk project C++.
File BUILD
Ikuti panduan di bawah saat membuat file BUILD:
Setiap file
BUILDharus berisi satu target aturancc_libraryper unit kompilasi dalam direktori.Anda harus membuat library C++ secara terperinci sebanyak mungkin untuk memaksimalkan inkrementalitas dan melakukan paralelisasi 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 targetcc_librarydalam file. Beri nama target[library-name]_testdan file sumber[library-name]_test.cc. Misalnya, target pengujian untuk target librarymylibyang ditampilkan di atas akan terlihat seperti ini:cc_test( name = "mylib_test", srcs = ["mylib_test.cc"], deps = [":mylib"] )
Sertakan jalur
Ikuti panduan berikut untuk menyertakan jalur:
Buat semua jalur penyertaan relatif terhadap direktori ruang kerja.
Gunakan include yang diapit tanda kutip (
#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_partyyang memerlukan penyertaan yang mengarah ke luar repositori project, seperti repositori eksternal yang menyertakan awalan yang diperlukan, gunakan argumeninclude_prefixdanstrip_include_prefixpada target aturancc_library.
Fitur toolchain
Fitur opsional berikut
dapat meningkatkan kualitas project C++. Flag ini dapat diaktifkan menggunakan
tanda command line --features atau atribut features dari
aturan repo,
package, atau cc_*:
- Fitur
parse_headersmembuat compiler C++ digunakan untuk menguraikan (tetapi tidak mengompilasi) semua file header dalam target yang di-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 tempat header disertakan. - Fitur
layering_checkmenerapkan bahwa target hanya menyertakan header yang disediakan oleh dependensi langsungnya. Toolchain default mendukung fitur ini di Linux denganclangsebagai compiler.