2012-08-08 10 views
6

क्या आप सीएमके को libfoo.so जैसे साझा पुस्तकालयों के लिए एक सिम्लिंक बनाने से रोकने का कोई तरीका है जब आप इतनी संस्करण का उपयोग कर रहे हैं (जिसका अर्थ है कि आपके पास libfoo.so.0.8 जैसा कुछ होगा)?सीएमके को साझा पुस्तकालयों के लिए स्थापित करने के लिए सिम्लिंक बनाने से कैसे रोकें?

कारण मैं यह पूछ रहा हूं कि मेरे पास एक प्रोजेक्ट है जहां मैं समानांतर में उस प्रोजेक्ट के कई संस्करणों को स्थापित करना चाहता हूं। अधिकांश पैकेज प्रबंधक हालांकि समानांतर स्थापना को अस्वीकार करते हैं यदि एकाधिक पैकेज में सिम्लिंक जैसी फ़ाइल मौजूद है।

पृष्ठभूमि जानकारी के रूप में: हम पैकेज बनाने के लिए सीपीएसी का उपयोग कर रहे हैं और अंत में मुझे लगता है कि यह सीपीएक्स की एक दोष है कि आप इस सिम्लिंक को रोक नहीं सकते हैं या कम से कम देव और रनटाइम पैकेज को अलग करने में सक्षम हैं। डेबियन के लिए। हालांकि, अब तक मुझे भ्रम है कि सीएमकेक को सिमलिंक बनाने से रोकना शायद सीपीएक्स को पैच करने से आसान काम हो सकता है।

उत्तर

10

साझा लाइब्रेरीज़ के लिए आप install command के NAMELINK_SKIP विकल्प का उपयोग कर सकते हैं ताकि वर्जन लाइब्रेरी नाम की वर्चुअल लिंक संस्करण की लाइब्रेरी फ़ाइल की पीढ़ी को रोका जा सके। जेनरेट किए गए सीपीएक्स इंस्टॉलर स्थापना पर उस सेटिंग का सम्मान करेंगे।

add_library(foo SHARED foo.c) 

set_target_properties(foo PROPERTIES SOVERSION "0.8") 

install(TARGETS foo LIBRARY DESTINATION lib NAMELINK_SKIP) 

include(CPack) 
:

निम्न नमूना कोड आवश्यक कदम नमूने: पुस्तकालय संस्करण साझा लाइब्रेरी लक्ष्य की SOVERSION संपत्ति की स्थापना द्वारा निर्दिष्ट करने के लिए है

संबंधित मुद्दे

 संबंधित मुद्दे