Çalışma alanları, paketler ve hedefler

. Sorun bildirin Kaynağı göster Gece · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

Bazel, dizin ağacında düzenlenen kaynak kodundan yazılım derler. çalışmayacaktır. Çalışma alanındaki kaynak dosyalar, iç içe yerleştirilmiş bir hiyerarşiye göre düzenlenir içeren bir dizindir. Bu dizinde her paket, ilişkili kaynak dosyalar ve bir BUILD dosyası. BUILD dosyası hangi yazılımın çıkışları kaynaktan derlenebilir.

Çalışma alanı

Çalışma alanı, dosya sisteminizde bulunan ve dosyaları oluşturun. Her çalışma alanının WORKSPACE boş olabilir veya harici referanslar içerebilir bağımlılıkları da görebilirsiniz.

WORKSPACE adında bir dosyayı içeren dizinler, çalışmayacaktır. Bu nedenle, Bazel kök dizini olan bir çalışma alanındaki dizin ağaçlarını yoksayar WORKSPACE dosyası içeren alt dizindir. Bu alt dizinler başka bir çalışma alanını oluşturur.

Bazel, WORKSPACE.bazel dosyasını WORKSPACE dosyasının takma adı olarak da destekler. Eğer her iki dosya da mevcutsa WORKSPACE.bazel kullanılır.

Kod depoları

Kod, depolarda düzenlenir. WORKSPACE içeren dizin dosyası, @ olarak da adlandırılan ana deponun köküdür. Diğer, (harici) depoları WORKSPACE dosyasında çalışma alanı kuralları kullanılarak tanımlanır veya Bzlmod sistemindeki modüller ve uzantılardan oluşturulan verileri içerir. Harici bağımlılıklara genel bakış makalesini inceleyebilirsiniz.

Bazel ile paketlenen çalışma alanı kuralları, Çalışma Alanı Oluşturma'daki Ansiklopedi ve yerleşikleştirilmiş hakkındaki belgeler Starlark deposu kurallarını inceleyin.

Harici depolar kod depoları olduğundan, genellikle bir WORKSPACE dosyası da oluşturulur. Ancak, bu ek WORKSPACE dosyaları Bazel tarafından yoksayıldı. Özellikle, geçişli olarak bağımlı olan depolar otomatik olarak eklenir.

Paketler

Bir depodaki kod organizasyonunun birincil birimi pakettir. CEVAP paket, ilgili dosyalardan oluşan bir koleksiyondur ve bu dosyaların ve çıktı yapıları oluşturmak için kullanılır.

Paket, bir dizin olarak tanımlanır ve BUILD veya BUILD.bazel adlı BUILD dosyası. CEVAP paketi, dizinindeki tüm dosyaları ve altındaki tüm alt dizinleri içerir. (kendileri bir BUILD dosyası içerenler hariç). Bu tanıma göre dosyası veya dizini iki farklı paketin parçası olabilir.

Örneğin, aşağıdaki dizin ağacında my/app, ve my/app/tests alt paketi. my/app/data öğesinin bir paket olmadığını ve my/app paketine ait bir dizindir.

src/my/app/BUILD
src/my/app/app.cc
src/my/app/data/input.txt
src/my/app/tests/BUILD
src/my/app/tests/test.cc

Hedefler

Paket, paketin BUILD dosyası. Çoğu hedef, dosyalar ve kurallar olmak üzere iki ana türden biridir.

Dosyalar iki türe ayrılır. Kaynak dosyalar genellikle ve depoya giriş yaptı. Oluşturulan dosyalar, türetilmiş dosyalar veya çıkış dosyaları olarak da adlandırılır oluşturulan verileri içerebilir.

İkinci hedef türü, bir kural ile belirtilir. Her kural örneği bir girdi kümesi ile bir çıkış dosyaları kümesi arasındaki ilişkiyi belirtir. İlgili içeriği oluşturmak için kullanılan bir kurala yapılan girişler kaynak dosya olabilir, ancak bunlar aynı zamanda diğer kurallar.

Bir kurala ait girişin kaynak dosya mı yoksa oluşturulan bir dosya mı olduğu durumlar önemsizdir; önemli olan sadece ilgili dosyanın içeriğidir. Bu bilgi karmaşık bir kaynak dosyanın, Google Earth'te bulunan bir kullanıcının oluşturduğu manuel olarak yüksek düzeyde kontrol sahibi olmanın getirdiği yapılandırılmış bir dosya çok yorucu hale gelir ve biri bunu türetmek için bir program yazar. Söz konusu dosyanın tüketicilerinin herhangi bir değişiklik yapmasına gerek yoktur. Öte yandan, oluşturulmuş bir dosyası yalnızca yerel değişiklikler içeren bir kaynak dosyayla kolayca değiştirilebilir.

Bir kurala yapılan girişler, başka kuralları da içerebilir. Böyle bir şeyin tam anlamı çoğu zaman oldukça karmaşıktır ve dile ya da kurala bağlıdır, basittir: bir C++ kitaplık kuralı A'da başka bir C++ kitaplığı olabilir için B kuralına ekleyin. Bu bağımlılığın etkisi, B'nin başlık dosyalarının B'nin sembolleri derleme sırasında A tarafından kullanılabilir, bağlantısı ve B'nin çalışma zamanı verileri yürütme sırasında A'ya sunulur.

Tüm kuralların değişmeyen bir yönü, bir kural tarafından oluşturulan dosyaların her zaman ait olduğu kuralın kendisiyle aynı pakete sahiptir; aynı zamanda başka bir paket. Bir kurala ait girişlerin başka bir kaynaktan gelmesi sık karşılaşılan bir durum değildir paketten yararlanın.

Paket grupları, kuralları vardır. Paket grupları, package_group işleviyle tanımlanır. Onlar üç özelliği vardır: içerdikleri paketlerin listesi, adları ve diğer paket gruplarını da dahil edin. Bunlara referans vermek için izin verilen tek yol visibility özelliğinden veya default_visibility özelliğinden package işlevi; Dosya oluşturmaz veya kullanmazlar. Daha fazla package_group dokümanlarına göz atın.

Etiketler