जब आप एक आयातित लक्ष्य बनाते हैं, तो आप सीएमके को बता रहे हैं: मेरे पास यह {स्थिर लाइब्रेरी है। साझा पुस्तकालय | मॉड्यूल पुस्तकालय | निष्पादन योग्य} डिस्क पर इस स्थान पर पहले ही बनाया गया है। मैं इसे अपने ऑनव बिल्डसिस्टम द्वारा बनाए गए लक्ष्य की तरह व्यवहार करने में सक्षम होना चाहता हूं, इसलिए ध्यान दें कि जब मैं ImportedTargetName
कहता हूं, तो उस डिस्क पर उस बाइनरी को संदर्भित करना चाहिए (लागू होने पर संबंधित आयात lib के साथ, और इसी तरह)।
जब आप एक इंटरफ़ेस लाइब्रेरी बनाते हैं, तो आप सीएमके को बता रहे हैं: मेरे पास गुणों का यह सेट है (निर्देशिकाएं शामिल हैं आदि) जो क्लाइंट उपयोग कर सकते हैं, इसलिए यदि वे मेरे इंटरफ़ेस लाइब्रेरी में "लिंक" करते हैं, तो कृपया इन गुणों को प्रचारित करें उन्हें।
मौलिक अंतर यह है कि इंटरफ़ेस पुस्तकालयों को डिस्क पर किसी भी चीज़ का समर्थन नहीं किया जाता है, वे केवल आवश्यकताओं/गुणों का एक सेट हैं। आप एक इंटरफ़ेस लाइब्रेरी पर INTERFACE_LINK_LIBRARIES
संपत्ति सेट कर सकते हैं यदि आप वास्तव में चाहते हैं, लेकिन यह वास्तव में उनके लिए डिज़ाइन नहीं किया गया था। वे क्लाइंट-उपभोग योग्य गुणों को समाहित करना चाहते हैं, और मुख्य रूप से सी ++ में हेडर-केवल पुस्तकालयों जैसी चीज़ों के लिए समझ में आते हैं।
यह भी ध्यान दें एक अंतरफलक पुस्तकालय है कि एक पुस्तकालय — वहाँ एक अंतरफलक निष्पादन जैसी कोई चीज नहीं है, लेकिन आप वास्तव में आयातित निष्पादनयोग्य हो सकता है। जैसे बाइसन के लिए एक पैकेज कॉन्फ़िग फ़ाइल बाइसन निष्पादन के लिए एक आयातित लक्ष्य निर्धारित कर सकते हैं, और अपनी परियोजना फिर कस्टम आदेश के लिए इसका इस्तेमाल कर सकते:
# In Bison package config file:
add_executable(Bison IMPORTED)
set_property(TARGET Bison PROPERTY IMPORTED_LOCATION ...)
# In your project:
find_package(Bison)
add_custom_command(
OUTPUT parser.c
COMMAND Bison tab.y -o parser.c
DEPENDS tab.y
...
)
(बाइसन बस कुछ का एक उदाहरण आप में उपयोग करने के लिए चाहते हो सकता है के रूप में प्रयोग किया जाता है कस्टम आदेश, और कमांड लाइन शायद इसके लिए सही नहीं है)।
@ एंटोनियो इस प्रश्न को टैग करने के लिए विजुअल स्टूडियो के साथ क्या करना है? – Angew
@Angew यह विजुअल स्टूडियो प्रॉपर्टी शीट्स को संदर्भित करता है, जिनमें से मुझे कुछ भी नहीं पता है। हालांकि मुझे सीएमके के बारे में पता है, मैं इस सवाल को पूरी तरह से समझ नहीं सकता। दूसरे शब्दों में कहा, विजुअल स्टूडियो के बारे में इस प्रश्न के ज्ञान को पूरी तरह उत्तर देने के लिए भी आवश्यक है। – Antonio