Bu sayfa, Bazel'i C++ projeleriyle kullanmanıza yardımcı olacak kaynaklar içerir. Bir eğiticiye, derleme kurallarına ve Bazel ile C++ projeleri oluşturmaya özel diğer bilgilere bağlantı verir.
Bazel ile çalışma
Aşağıdaki kaynaklar, C++ projelerinde Bazel ile çalışmanıza yardımcı olacaktır:
- Eğitim: C++ projesi oluşturma
- C++ yaygın kullanım alanları
- C/C++ kuralları
- Önemli Kitaplıklar
- C++ araç zinciri yapılandırması
- Eğitim: C++ araç zincirlerini yapılandırma
- C++ kurallarıyla entegrasyon
En iyi uygulamalar
Genel Bazel en iyi uygulamalarına ek olarak, aşağıda C++ projelerine özel en iyi uygulamaları bulabilirsiniz.
BUILD dosyaları
BUILD dosyalarınızı oluştururken aşağıdaki yönergeleri uygulayın:
Her
BUILD
dosyası, dizindeki derleme birimi başına bircc_library
kural hedefi içermelidir.Artımlılığı en üst düzeye çıkarmak ve derlemeyi paralel hale getirmek için C++ kitaplıklarınızı mümkün olduğunca ayrıntılı hale getirmeniz gerekir.
srcs
içinde tek bir kaynak dosya varsa kitaplığa bu C++ dosyasının adıyla aynı adı verin. Bu kitaplıkta C++ dosyaları, eşleşen üst bilgi dosyaları ve kitaplığın doğrudan bağımlılıkları bulunmalıdır. Örneğin:cc_library( name = "mylib", srcs = ["mylib.cc"], hdrs = ["mylib.h"], deps = [":lower-level-lib"] )
Dosyadaki her
cc_library
hedefi için bircc_test
kural hedefi kullanın. Hedef[library-name]_test
dosyasını ve kaynak dosyayı[library-name]_test.cc
olarak adlandırın. Örneğin, yukarıda gösterilenmylib
kitaplık hedefi için bir test hedefi şöyle görünür:cc_test( name = "mylib_test", srcs = ["mylib_test.cc"], deps = [":mylib"] )
Yolları dahil edin
Dahil etme yolları için şu yönergeleri izleyin:
Tüm yolların çalışma alanı diziniyle göreli olmasını sağlayın.
Sistem dışı başlıklar için tırnak işareti (
#include "foo/bar/baz.h"
) kullanın, açılı ayraçlar (#include <foo/bar/baz.h>
) için değil..
(geçerli dizin) veya..
(üst dizin) gibi UNIX dizin kısayollarını kullanmaktan kaçının.Proje deposunun dışına işaret etmeyi gerektiren eski kod veya
third_party
kodu için (ör. harici depo, ön ek kullanılmasını içerir)cc_library
kural hedefindeinclude_prefix
vestrip_include_prefix
bağımsız değişkenlerini kullanın.