Sık Sorulan Sorular

Sorun bildir Kaynağı görüntüle Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Yazma uzantılarıyla ilgili sık karşılaşılan sorunlar ve soruları aşağıda bulabilirsiniz.

Dosyam neden oluşturulmuyor veya işlemim neden hiç yürütülmüyor?

Bazel yalnızca istenen çıkış dosyalarını oluşturmak için gereken işlemleri yürütür.

  • İstediğiniz dosyada etiket varsa doğrudan isteyebilirsiniz: bazel build //pkg:myfile.txt

  • Dosya, hedefin bir çıkış grubundaysa komut satırında bu çıkış grubunu belirtmeniz gerekebilir: bazel build //pkg:mytarget --output_groups=foo

  • Hedefiniz komut satırında her bahsedildiğinde dosyanın otomatik olarak oluşturulmasını istiyorsanız DefaultInfo sağlayıcı döndürerek dosyayı kuralınızın varsayılan çıkışlarına ekleyin.

Daha fazla bilgi için Kurallar sayfası'na bakın.

Uygulama işlevim neden yürütülmüyor?

Bazel yalnızca derleme için istenen hedefleri analiz eder. Komut satırında hedefi veya hedefe bağlı bir şeyi adlandırmanız gerekir.

İşlemim veya ikili dosyam yürütülürken bir dosya eksik

1) Dosyanın işleme veya ikili dosyaya giriş olarak kaydedildiğinden ve 2) yürütülen komut dosyasının ya da aracın dosyaya doğru yolu kullanarak eriştiğinden emin olun.

İşlemler için girişleri, işlemi oluşturan ctx.actions.* işlevine ileterek bildirirsiniz. Dosyanın doğru yolu File.path kullanılarak elde edilebilir.

İkili dosyalar (bazel run veya bazel test komutuyla çalıştırılan yürütülebilir çıkışlar) için girişleri runfiles'a dahil ederek beyan edersiniz. path alanı yerine, ikilinin yürütüldüğü runfiles dizinine göre dosyanın yolu olan File.short_path'ı kullanın.

Hangi dosyaların bazel build //pkg:mytarget tarafından oluşturulacağını nasıl kontrol edebilirim?

DefaultInfo sağlayıcısını kullanarak varsayılan çıkışları ayarlayın.

Derlememin bir parçası olarak nasıl program çalıştırabilir veya dosya G/Ç'si yapabilirim?

Bir araç, derlemenizin diğer tüm bölümleri gibi hedef olarak bildirilebilir ve diğer hedeflerin oluşturulmasına yardımcı olmak için yürütme aşamasında çalıştırılabilir. Bir aracı çalıştıran işlem oluşturmak için ctx.actions.run kullanın ve aracı executable parametresi olarak iletin.

Yükleme ve analiz aşamalarında bir araç çalıştırılamaz ve dosya G/Ç işlemi gerçekleştirilemez. Bu, araçların ve dosya içeriklerinin (BUILD ve .bzl dosyalarının içerikleri hariç) hedef ve işlem grafiklerinin oluşturulma şeklini etkileyemeyeceği anlamına gelir.

Aynı yapılandırılmış verilere hem yürütme aşamasından önce hem de bu aşama sırasında erişmem gerekirse ne yapmalıyım?

Yapılandırılmış verileri .bzl dosyası olarak biçimlendirebilirsiniz. Yükleme ve analiz aşamalarında dosyaya erişmek için load() yapabilirsiniz. Yürütme aşamasında ihtiyaç duyan işlemler ve yürütülebilir dosyalar için giriş veya runfile olarak iletebilirsiniz.

Starlark kodunu nasıl belgelemeliyim?

Kurallar ve kural özellikleri için rule veya attr.*() işlevinin doc parametresine bir docstring değişmezi (üç tırnaklı olabilir) iletebilirsiniz. Yardımcı işlevler ve makrolar için burada verilen biçimi izleyen üç tırnaklı bir docstring değişmezi kullanın. Kural uygulama işlevlerinin genellikle kendi docstring'lerine ihtiyacı yoktur.

Dize değişmezlerini beklenen yerlerde kullanmak, otomatik araçların dokümanları ayıklamasını kolaylaştırır. Kodunuzu okuyan kişiye yardımcı olabileceği her yerde standart olmayan dize yorumlarını kullanabilirsiniz.