← man/dev_and_programming
gen_bridge_metadata — man gen_bridge_metadata — 80×24
ugur@toprak:~/man/dev_and_programming$man gen_bridge_metadata
Bölüm 1 Geliştirme & Programlama

gen_bridge_metadata

Objective-C Köprüleri Metadata Üreticisi

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