2014-05-23 29 views
8

Sadece CMake ile çalışmaya başladım ve bunların hem find_package hem de find_library olduğunu fark ettim. Ve bu beni şaşırtıyor. Birisi programlama dünyasında bir paket ve kütüphane arasındaki farkı açıklayabilir mi? Ya da, CMake dünyasında?Paket vs Kütüphane

Takdir et, millet!

cevap

6

Eğer projenizde zlib kullanmak istediğiniz düşünün, üstbilgi dosyası zlib.h bulmalıyız ve kütüphane libz.so (Linux'ta). Bunları bulmak için düşük seviye cmake komutlarını find_path ve find_library kullanabilir veya find_package(ZLIB)'u kullanabilirsiniz. Daha sonra komut, zlib kullanmak için gerekli olan her şeyi bulmaya çalışacaktır. Ekstra makro tanımları veya bağımlılıklar olabilir.

Update, hakkında daha fazla ayrıntı find_package: CKağıt komutu find_package(SomeThing) çağrıldığında, as says the documentation vardır iki olasılık: ya bir dosyayı arar yapılandırma modu ((dosya FindSomeThing.cmake arar) modülü modu SomeThingConfig.cmake olarak adlandırılmıştır. ZLIB için, CMake ile birlikte (/usr/share/cmake/Modules/FindZLIB.cmake dosya olan Linux makinemde) FindZLIB adlı bir modül vardır. Bu modül varsayılan konumlarda ZLIB dosyalarını aramak için CMake API'sini kullanan bir CMake betiğidir veya kullanıcıya otomatik olarak bulunamıyorsa konum sormasını ister.

+1

ZLIB nasıl tanımlandı? Zlib kullanmak için neyin gerekli olduğunu bulmak için gerekli komutları kim yazdı? – ShrimpCrackers

+0

@ShrimpCrackers: Cevapla değiştirdim. – lrineau