2014-05-23 13 views
8

मैंने अभी सीएमके के साथ काम करना शुरू कर दिया है और मैंने देखा है कि उनके पास find_package और find_library दोनों हैं। और यह मुझे भ्रमित करता है। क्या कोई प्रोग्रामिंग की दुनिया में एक पैकेज और पुस्तकालय के बीच अंतर को समझा सकता है? या, सीएमके की दुनिया में?पैकेज बनाम लाइब्रेरी

इसकी सराहना करें, दोस्तों!

उत्तर

6

कल्पना कीजिए कि आप अपनी परियोजना में zlib उपयोग करना चाहते हैं, तो आप हेडर फाइल zlib.h खोजने की जरूरत है, और लाइब्रेरी libz.so (लिनक्स पर)। आप उन्हें खोजने के लिए निम्न-स्तरीय सेमेक कमांड find_path और find_library का उपयोग कर सकते हैं, या आप find_package(ZLIB) का उपयोग कर सकते हैं। बाद का आदेश ज़्लिब का उपयोग करने के लिए आवश्यक सभी चीज़ों को खोजने का प्रयास करेगा। यह अतिरिक्त मैक्रो परिभाषाएं, या निर्भरता हो सकती है।

अद्यतन, के बारे में और अधिक विस्तार find_package: जब CMake आदेश find_package(SomeThing) कहा जाता है, as says the documentation, देखते हैं दो संभावना: मॉड्यूल मोड, या config मोड (जो किसी फ़ाइल के लिए खोज करता है (जो एक फ़ाइल FindSomeThing.cmake की खोज करता है) नाम SomeThingConfig.cmake)। ZLIB के लिए, FindZLIB नामक एक मॉड्यूल है, जो स्वयं को सीएमके के साथ भेज दिया गया है (मेरी लिनक्स मशीन पर फ़ाइल /usr/share/cmake/Modules/FindZLIB.cmake है)। वह मॉड्यूल एक सीमेक स्क्रिप्ट है जो डिफ़ॉल्ट स्थानों में ZLIB फ़ाइलों को खोजने के लिए सीएमके एपीआई का उपयोग करता है, या उपयोगकर्ता को स्थान के लिए पूछता है यदि यह स्वचालित रूप से नहीं मिल पाता है।

+1

हालांकि ZLIB को कैसे परिभाषित किया गया है? Zlib का उपयोग करने के लिए आवश्यक क्या है यह जानने के लिए आवश्यक आदेशों को किसने लिखा था? – ShrimpCrackers

+0

@ShrimpCrackers: मैंने जवाब से संशोधन किया है। – lrineau

संबंधित मुद्दे