खोज…


वाक्य - विन्यास

  • find_package (pkgname [संस्करण] [EXACT] [QUIET] [आवश्यक])
  • शामिल हैं (FindPkgConfig)
  • pkg_search_module (उपसर्ग [आवश्यक] [QUIET] pkgname [otherpit ...))
  • pkg_check_modules (उपसर्ग [आवश्यक] [QUIET] pkgname [otherpit ...))

पैरामीटर

पैरामीटर विवरण
संस्करण (वैकल्पिक) एक प्रमुख संख्या द्वारा परिभाषित पैकेज का न्यूनतम संस्करण और वैकल्पिक रूप से एक मामूली, पैच और ट्वीक नंबर, प्रमुख major.minor.pex.tweak में।
सटीक (वैकल्पिक) निर्दिष्ट करें कि संस्करण में निर्दिष्ट version पाया जाने वाला सटीक संस्करण है
आवश्यक (वैकल्पिक) स्वचालित रूप से एक त्रुटि फेंकता है और पैकेज नहीं मिलने पर प्रक्रिया को रोक देता है
QUIET (वैकल्पिक) फ़ंक्शन मानक आउटपुट में कोई संदेश नहीं भेजेगा

टिप्पणियों

  • find_package तरीका सभी प्लेटफ़ॉर्म पर संगत है, जबकि pkg-config तरीका केवल यूनिक्स जैसे प्लेटफार्मों पर उपलब्ध है, जैसे लिनक्स और OSX।

  • का पूरा विवरण find_package कई मापदंडों और विकल्प में पाया जा सकता पुस्तिका

  • भले ही कई वैकल्पिक मापदंडों को निर्दिष्ट करना संभव है, जैसे कि पैकेज का संस्करण, नहीं सभी खोजें मॉड्यूल उन सभी मापदंडों का ठीक से उपयोग करता है। यदि कोई अपरिभाषित व्यवहार होता है, तो सीएमके के स्थापित पथ में मॉड्यूल को ढूंढना और उसके व्यवहार को ठीक करना या समझना आवश्यक हो सकता है।

Find_package और Find का उपयोग करें .cmake मॉड्यूल

CMake के साथ संस्थापित संकुलों को खोजने का डिफ़ॉल्ट तरीका है find_package फ़ंक्शन के साथ संयोजन में Find<package>.cmake फ़ाइल का उपयोग करना। फ़ाइल का उद्देश्य पैकेज के लिए खोज नियमों को परिभाषित करना और विभिन्न चर सेट करना है, जैसे <package>_FOUND , <package>_INCLUDE_DIRS और <package>_LIBRARIES

कई Find<package>.cmake फ़ाइल पहले से ही CMake में डिफ़ॉल्ट रूप से परिभाषित हैं। हालाँकि, यदि आपके लिए आवश्यक पैकेज के लिए कोई फ़ाइल नहीं है, तो आप हमेशा अपना स्वयं का लिख सकते हैं और इसे ${CMAKE_SOURCE_DIR}/cmake/modules (या किसी अन्य निर्देशिका में यदि CMAKE_MODULE_PATH ओवरराइड किया गया है) के अंदर रख सकते हैं)

डिफ़ॉल्ट मॉड्यूल की एक सूची मैनुअल (v3.6) में पाई जा सकती है। प्रोजेक्ट में उपयोग किए गए CMake के संस्करण के अनुसार मैनुअल की जांच करना आवश्यक है अन्यथा लापता मॉड्यूल हो सकता है। cmake --help-module-list साथ स्थापित मॉड्यूल को cmake --help-module-list भी संभव है।

Github पर FindSDL2.cmake लिए एक अच्छा उदाहरण है

यहां एक मूल CMakeLists.txt जिसे SDL2 की आवश्यकता होगी:

cmake_minimum_required(2.8 FATAL_ERROR)
project("SDL2Test")

set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake/modules")
find_package(SDL2 REQUIRED)

include_directories(${SDL2_INCLUDE_DIRS})
add_executable(${PROJECT_NAME} main.c)
target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARIES})

Pkg_search_module और pkg_check_modules का उपयोग करें

यूनिक्स-जैसे ऑपरेटिंग सिस्टम पर, <package>.pc फ़ाइल प्रदान करने वाले पैकेजों को खोजने और कॉन्फ़िगर करने के लिए pkg-config प्रोग्राम का उपयोग करना संभव है।

का उपयोग करने के pkg-config , यह कॉल के लिए आवश्यक है include(FindPkgConfig) एक में CMakeLists.txt । फिर, 2 संभावित कार्य हैं:

  • pkg_search_module , जो पैकेज की जाँच करता है और पहले उपलब्ध का उपयोग करता है।
  • pkg_check_modules , जो सभी संबंधित पैकेजों की जांच करते हैं।

यहाँ एक मूल CMakeLists.txt जो 2.0.1 से ऊपर या इसके संस्करण के साथ SDL2 खोजने के लिए pkg-config का उपयोग करता है:

cmake_minimum_required(2.8 FATAL_ERROR)
project("SDL2Test")

include(FindPkgConfig)
pkg_search_module(SDL2 REQUIRED sdl2>=2.0.1)

include_directories(${SDL2_INCLUDE_DIRS})
add_executable(${PROJECT_NAME} main.c)
target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARIES})


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow