Halaman ini berisi referensi yang akan membantu Anda menggunakan Bazel dengan project C++. {i>Link<i} ini menautkan tutorial, aturan build, dan informasi lain yang spesifik untuk membangun C++ proyek bersama Bazel.
Bekerja dengan Bazel
Referensi berikut akan membantu Anda bekerja dengan Bazel pada project C++:
- Tutorial: Membuat project C++
- Kasus penggunaan umum C++
- Aturan C/C++
- Konfigurasi toolchain C++
- Tutorial: Mengonfigurasi toolchain C++
- Mengintegrasikan dengan aturan C++
Praktik terbaik
Selain praktik terbaik umum Bazel, berikut adalah praktik terbaik khusus project C++.
BUILD file
Ikuti panduan di bawah ini saat membuat file BUILD:
Setiap file
BUILD
harus berisi satucc_library
target aturan per unit kompilasi di direktori.Anda harus membuat perincian library C++ sebesar untuk memaksimalkan inkrementalitas dan memparalelkan build.
Jika ada satu file sumber di
srcs
, beri nama library yang sama dengan nama file C++ itu. Library ini harus berisi file C++, yang cocok file header, 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 targetcc_library
dalam file. Beri nama target[library-name]_test
dan file sumber[library-name]_test.cc
. Misalnya, target pengujian untuk target librarymylib
yang ditunjukkan di atas akan 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 ruang kerja.
Penggunaan tanda kutip mencakup (
#include "foo/bar/baz.h"
) untuk header non-sistem, bukan tanda kurung siku (#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 kursor ke luar repositori project, seperti repositori eksternal yang memerlukan awalan, gunakaninclude_prefix
danstrip_include_prefix
argumen pada target aturancc_library
.