2011-05-30 11 views
10

मेरे पास वर्तमान में एक परियोजना है जो दो तृतीय पक्ष पुस्तकालयों से जुड़ी है। इन पुस्तकालयों को स्वयं द्वारा बनाया जाना चाहिए और फिर परियोजना से जुड़ा होना चाहिए। एक टैगलिब है और दूसरा zlib है। मैंने देखा कि जब आप टैगलिब निर्देशिका पर सीमेक-गुई प्रोग्राम का उपयोग करते हैं तो आपको यह निर्दिष्ट करना होगा कि zlib कहाँ बनाया गया है और इंस्टॉल किया गया है।सीएमके को तीसरे पक्ष के पुस्तकालयों को खोजने की कोशिश करने में मदद की ज़रूरत है

मेरा लक्ष्य सीएमके को मेरे कार्यक्रम के लिए एक ही चीज़ करने के लिए प्राप्त करना है। चूंकि इन पुस्तकालयों को संग्रहीत किया गया स्थान असंगत होगा क्योंकि मैं उपयोगकर्ता को पुस्तकालयों के लिए पथ प्रदान करने के लिए कैसे संकेत दे सकता हूं?

मुझे आशा है कि यह पर्याप्त विशिष्ट है।

उत्तर

19

जेएलआईबी के मामले में, एक FindZLIB.cmake कोमेक के साथ प्रदान किया जाता है और आप अपने cmakelists में find_package कॉल डाल सकते हैं। यदि आवश्यक हो तो आप अपनी आवश्यकताओं के अनुरूप findzlib.cmake में कुछ संशोधन कर सकते हैं। जैसे लाइब्रेरी की खोज करते समय ZLIB_DIR को अतिरिक्त संकेत के रूप में जोड़ना। यह ZLIB_DIR तब उपयोगकर्ता द्वारा सेट किया जा सकता है।

आपकी लाइब्रेरी/निष्पादन योग्य मानते हुए आपका प्रोजेक्ट कहा जाता है, तो आप इसे निम्नानुसार उपयोग कर सकते हैं।

find_package(ZLIB REQUIRED) 
if (ZLIB_FOUND) 
    include_directories(${ZLIB_INCLUDE_DIRS}) 
    target_link_libraries(YourProject ${ZLIB_LIBRARIES}) 
endif(ZLIB_FOUND) 

आप (या एक अच्छा एक के लिए खोज) taglib के लिए एक ही दृष्टिकोण का उपयोग करना चाहिए, लेकिन इसके बजाय अपने खुद के FindTagLib.cmake लिखना चाहिए।

यहां महत्वपूर्ण हिस्सा यह है कि आप उपयोगकर्ता को टैगलिब की खोज करने के लिए उपयोग किए जाने वाले टैगलिब_DIR चर सेट करने का विकल्प देते हैं और आप सफलता या विफलता की रिपोर्ट करने के लिए FindPackageHandleStandardArgs का उपयोग करते हैं।

+0

में इस चर तो सब मैं CMakeLists.txt रूप में एक ही निर्देशिका में इस FindTaglib.cmake डाल दिया है संभाल करने के लिए FindZLIB.cmake अद्यतन करने के लिए मत भूलना? –

+0

यह CMAKE_MODULE_PATH में FindTagLib.cmake की खोज करता है। मुझे यकीन नहीं है कि CMakeLists.txt के साथ मुख्य डीआईआर पहले से मौजूद है या नहीं। यदि नहीं, तो आप इसे जोड़ सकते हैं: सेट करें (CMAKE_MODULE_PATH $ {CMAKE_CURRENT_SOURCE_DIR}) –

1

इंटरैक्टिव शीघ्र बारे में सुनिश्चित नहीं हैं, लेकिन आप हमेशा वातावरण चर का उपयोग कर सकते हैं या निम्न:

cmake -D<VAR_NAME>:STRING=<path to custom zlib> . 

कस्टम zlib या taglib स्थान के साथ cmake प्रदान करने के लिए।

FIND_PATH और FIND_LIBRARY