C++ ve Bazel

Sorun bildirin Kaynağı göster

Bu sayfada, Bazel'ı C++ projeleriyle kullanmanıza yardımcı olacak kaynaklar bulunmaktadır. 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ı olur:

En iyi uygulamalar

Bazel ile ilgili genel en iyi uygulamalara ek olarak, aşağıda C++ projelerine özel en iyi uygulamalar yer almaktadır.

BUILD dosyaları

BUILD dosyalarınızı oluştururken aşağıdaki yönergeleri izleyin:

  • Her BUILD dosyası, dizindeki her derleme birimi için bir cc_library kural hedefi içermelidir.

  • Artımlılığı en üst düzeye çıkarmak ve derlemeyi paralel yapmak için C++ kitaplıklarınızı mümkün olduğunca ayrıntılı hale getirmelisiniz.

  • srcs ürününde tek bir kaynak dosya varsa kitaplığı, söz konusu C++ dosyasının adıyla aynı şekilde adlandırın. Bu kitaplık C++ dosyalarını, eşleşen başlık dosyalarını ve kitaplığın doğrudan bağımlılıklarını içermelidir. Örneğin:

    cc_library(
        name = "mylib",
        srcs = ["mylib.cc"],
        hdrs = ["mylib.h"],
        deps = [":lower-level-lib"]
    )
    
  • Dosyadaki her cc_library hedefi için bir cc_test kural hedefi kullanın. Hedef [library-name]_test ve kaynak dosyayı [library-name]_test.cc olarak adlandırın. Örneğin, yukarıda gösterilen mylib 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

Yolları dahil etmek için şu yönergeleri izleyin:

  • Tüm öğelerin çalışma alanı dizinine göre yol içermesini sağlayın.

  • Sistem dışı başlıklar için açılı parantezleri (#include <foo/bar/baz.h>) değil, tırnak içine alınmış içermeleri (#include "foo/bar/baz.h") kullanın.

  • . (geçerli dizin) veya .. (üst dizin) gibi UNIX dizin kısayollarını kullanmaktan kaçının.

  • Harici kod deposunun ön ek gerektirmesi gibi, proje deposunun dışına işaret etmeyi gerektiren eski veya third_party kodları için cc_library kural hedefinde include_prefix ve strip_include_prefix bağımsız değişkenlerini kullanın.