C++ ve Bazel

Sorun bildir Kaynağı göster

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:

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 bir cc_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 bir cc_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ö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

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 hedefinde include_prefix ve strip_include_prefix bağımsız değişkenlerini kullanın.