/ / Cmake पैकेज कैसे खोजता है? - c ++, linux, ubuntu, cmake, makefile

Cmake पैकेज कैसे ढूंढता है? - सी ++, लिनक्स, उबंटू, सेमेक, मेकफ़ाइल

मैं समझने की कोशिश कर रहा हूँ कि कैसे cmake पैकेज का पता लगाता है, का उपयोग करते हुए FindXXX.cmake फ़ाइल। एक उदाहरण के रूप में, लाइब्रेरी OpenNI में फ़ाइल है FindOpenNI.cmake यहाँ परिभाषित किया गया है: https://github.com/PointCloudLibrary/pcl/blob/master/cmake/Modules/FindOpenNI.cmake

अब, उस फ़ाइल के नीचे, निम्नलिखित है:

if(OPENNI_FOUND)
# Add the include directories
set(OPENNI_INCLUDE_DIRS ${OPENNI_INCLUDE_DIR})
message(STATUS "OpenNI found (include: ${OPENNI_INCLUDE_DIRS}, lib: ${OPENNI_LIBRARY})")
endif(OPENNI_FOUND)

मुझे समझ नहीं आ रहा है कि चर कहाँ है OPENNI_FOUND परिभाषित किया गया है, क्योंकि यह उल्लेखित फ़ाइल का पहला बिंदु है।

मैंने सोचा होगा कि इस फाइल का इस्तेमाल खुद OpenNI को खोजने के लिए किया जाता है, निर्देशिका को फाइल के कंटेंट में तय किया जाता है। OPENNI_FOUND पहले घोषित किया जाना चाहिए था। इसलिए, यह मेरे लिए भ्रामक है: FindOpenNI.cmake OpenNI खोजने के लिए उपयोग किया जा रहा है, लेकिन उस प्रक्रिया के दौरान, इसे चर दिया गया है OPENNI_FOUND, जो खुद को सेमीके बताता है कि क्या ओपनएनआई पाया गया है।

तो कैसे cmake वास्तव में OpenNI खोज रहा है? इस फ़ाइल का उपयोग कर रहे हैं? या कोई और तरीका?

धन्यवाद :)

उत्तर:

जवाब के लिए 0 № 1

हां, CMake OpenNI को खोजने के लिए आपके द्वारा बताई गई फ़ाइल का उपयोग करता है। OPENNI_FOUND चर द्वारा निर्धारित किया गया है find_package_handle_standard_args() समारोह। यह वह जगह है जहां सभी जादू किया जाता है, देखें इसके लिए प्रलेखन.