मैं समझने की कोशिश कर रहा हूँ कि कैसे 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()
समारोह। यह वह जगह है जहां सभी जादू किया जाता है, देखें इसके लिए प्रलेखन.