Sözdizimi
gen_bridge_metadata [seçenekler...] başlıklar...
Açıklama
gen_bridge_metadata, belirli bir framework (çatı) veya başlık (header) kümesi için köprüleme metadata bilgilerini oluşturan bir araçtır. Mac OS X'te desteklenen PyObjC (Python) gibi Objective-C köprüleri, bu bilgiyi çalışma zamanında (runtime) okur.
Mac OS 10.7 itibarıyla gen_bridge_metadata, clang tabanlı geliştirilmiş bir ayrıştırıcı (parser) kullanır. Bu durum, oluşturulan dosyaların daha doğru ve eksiksiz olmasını sağlar; ayrıca gerçek ayrıştırma işlemi, derleyici tarafından desteklenen mevcut attribute() bilgilerinden otomatik olarak metadata çıkarılmasına olanak tanır. Dosya oluşturma süresi de daha hızlı olmalıdır.
Metadata dosyaları, bir Objective-C framework'ünün köprüler tarafından otomatik olarak işlenemeyen kısımlarını açıklar. Bunlar öncelikle framework'ün ANSI C öğeleridir (fonksiyonlar, sabitler, numaralandırmalar vb.); ancak işaretçi benzeri argümanlar kabul eden fonksiyonlar veya metotlar gibi özel durumları da içerirler. Bu özel durumların, istisnalar (exceptions) olarak adlandırılan ayrı dosyalarda manuel olarak belirtilmesi gerekir. gen_bridge_metadata aracı, framework metadatasını oluştururken bu istisnalar dosyasını okuyabilir.
x86_64 metadata dosyaları için kullanılan dosya uzantısı .bridgesupport olmalıdır. arm64e metadata dosyalarının uzantısı ise .arm64e.bridgesupport olmalıdır.
Satır içi (inline) fonksiyonlar gibi bazı öğeler metadata dosyalarında tanımlanamaz. Bu nedenle köprülerin bunları kullanabilmesi için dinamik bir kütüphane oluşturulması gerekir. gen_bridge_metadata aracı bunu sizin yerinize halledebilir.
Dinamik kütüphanelerin dosya uzantısı .dylib olmalıdır.
Metadata dosyalarını üç dosya sistemi konumundan birine yüklemelisiniz. Örneğin, /Library/Frameworks/MyFramework.framework olarak yüklenmiş olan MyFramework adlı bir framework için MyFramework.bridgesupport ve MyFramework.dylib dosyalarını, öncelik sırasına göre aşağıdaki olası konumlardan birine yükleyebilirsiniz:
• /Library/Frameworks/MyFramework/Resources/BridgeSupport
• /Library/BridgeSupport
• ~/Library/BridgeSupport
Seçenekler
gen_bridge_metadata aracı aşağıdaki komut satırı seçeneklerini kabul eder:
-f framework, --framework framework Belirtilen framework için metadata oluşturur. Bu argüman hem bir framework adını hem de bir framework'e giden mutlak yolu kabul edebilir. Bir framework adı geçirildiğinde program, framework'ü standart framework konumlarından birinde bulmaya çalışır.
-p, --private Belirtilen framework'lerin özel (private) başlık dosyalarına dayalı metadata oluşturur. Bu argüman -f argümanı ile birlikte kullanılmalıdır.
-F format, --format format Oluşturulacak metadata formatını seçer. Olası değerler şunlardır:
final Nihai metadata formatı. Varsayılan değer budur.
dylib Dinamik kütüphane formatı. Bu yalnızca satır içi (inline) fonksiyonları desteklemek istiyorsanız gereklidir. Bu formatı kullanmak için -o argümanına bir değer geçirmeniz gerekir.
exceptions-template Bu, bir istisna şablonu oluşturur. İstisna formatı hakkında daha fazla ayrıntı için lütfen BridgeSupport(5) kılavuzuna bakın. İstisna dosyanız tamamlandığında, nihai metadatayı oluşturmak için onu -e argümanına geçirebilirsiniz.
-e dosya, --exception dosya Nihai metadata formatını oluştururken belirtilen istisna dosyasını dikkate alır. Belirtilen istisna dosyası, bridgeSupport(5) kılavuzunda açıklanan belirli bir formata uygun olmalıdır. İstisna dosyaları manuel olarak yazılır, ancak üreticiye -F exceptions-template parametresini geçirerek bir şablon oluşturabilirsiniz.
--arm64e x86_64 yerine arm64e ek açıklamalarını (annotations) yazar ve dylib dosyasını arm64e olarak derler. Çıkış dosyası yolunda zaten bir dylib mevcutsa, çoklu mimariye (multi-architecture) sahip bir dosya oluşturulacaktır. Bir x86_64 dylib dosyasına arm64e dilimi (slice) eklenecektir. Tersine, ilk olarak bir arm64e dylib dosyası mevcutsa, üreticiyi --arm64e argümanı olmadan çalıştırmak bir x86_64 dilimi ekleyecektir.
--64-bit Bu seçeneğin hiçbir etkisi yoktur. 32-bit desteği kullanımdan kaldırıldığı için geriye dönük uyumluluk amacıyla dahil edilmiştir. Yalnızca 64-bit desteği mevcuttur.
--no-32-bit Bu seçeneğin hiçbir etkisi yoktur. 32-bit desteği kullanımdan kaldırıldığı için geriye dönük uyumluluk amacıyla dahil edilmiştir. Yalnızca 64-bit desteği mevcuttur.
--no-64-bit Bu seçeneğin hiçbir etkisi yoktur. 32-bit desteği kullanımdan kaldırıldığı için geriye dönük uyumluluk amacıyla dahil edilmiştir. Yalnızca 64-bit desteği mevcuttur.
-c, --cflags bayraklar C derleyicisine geçirilecek özel bayrakları belirtir. Üretici, nihai metadata formatının oluşturulması sırasında birkaç C ve Objective-C programını derler ve yürütür. Bazı bayraklar varsayılan olarak belirlenir, ancak metadata oluşturmak istediğiniz kod parçasına göre kendi bayraklarınızı sağlamak isteyebilirsiniz (örneğin, bir şemsiye/umbrella framework'ün parçası olan bir framework için).
-C, --cflags-64 bayraklar 64-bit ek açıklamalar oluşturulurken C derleyicisine geçirilecek özel bayrakları belirtir. Varsayılan olarak, hem 32-bit hem de 64-bit ek açıklamalar oluşturulurken C derleyicisine aynı bayraklar geçirilir.
-o, --output dosya Çıktıyı belirtilen dosyaya yazar. “dylib” formatı oluşturulurken bu argümanın kullanılması zorunludur. Diğer formatlar için varsayılan olarak çıktı, standart çıktıya yönlendirilir.
-h, --help Seçeneklerin bir özetini yazdırır.
-d, --debug Hata ayıklama (debugging) mesajlarını etkinleştirir. Metadata üreticisinin kendisinde hata ayıklamayacaksanız muhtemelen bu seçeneği etkinleştirmek istemezsiniz.
-v, --version Programın sürümünü gösterir. Sürüm bilgisi ayrıca oluşturulan metadata dosyalarında, en üst düzeydeki “signatures” öğesinin “version” özniteliği olarak da işaretlenir.
Örnekler
Bu, özel bir framework için bridge support metadatası oluşturur:
mkdir -p /Path/To/YourFramework.framework/Resources/BridgeSupport
gen_bridge_metadata -f /Path/To/YourFramework.framework -o \
/Path/To/YourFramework.framework/Resources/BridgeSupport/YourFramework.bridgesupport
Eğer özel framework satır içi (inline) fonksiyonlara sahipse ve bunları çağırabilmek istiyorsanız, bir “dylib” dosyasını şu şekilde oluşturabilirsiniz:
gen_bridge_metadata -f /Path/To/YourFramework.framework -F dylib -o \
/Path/To/YourFramework.framework/Resources/BridgeSupport/YourFramework.dylib
Bağımsız bir C kütüphanesi (burada libcurl) için de bridge support metadatası oluşturmak mümkündür:
gen_bridge_metadata -c '-lcurl -I/usr/include/curl' /usr/include/curl/*.h > \
/Library/BridgeSupport/curl.bridgesupport
Ayrıca Bakınız
BridgeSupport(5) /System/Library/DTDs/BridgeSupport.dtd ruby(1) python(1)
macOS 26.4 24 Mayıs 2010 macOS 26.4