में उपयोग की जाने वाली एक लाइब्रेरी के लिए आरपीएथ सेट न करें मैं अपनी सीएमकेलिस्ट फाइल को कॉन्फ़िगर करना चाहता हूं ताकि मेरी प्रोजेक्ट बनाने के दौरान लिंकर एक साझा लाइब्रेरी (.so) की एक प्रति का उपयोग करता है जो रहता है मेरे निर्माण पेड़ में निष्पादन योग्य को जोड़ने के लिए लेकिन फिर लिंक किए गए निष्पादन योग्य में rpath सेट नहीं करता है ताकि लोडर अनुरोध करने पर सिस्टम को लाइब्रेरी प्रदान करनी चाहिए।सीएमके: लिंक
विशेष रूप से, मैं बिल्ड बिल्ड पर निर्माण समय के दौरान libOpenCL.so के खिलाफ लिंक करना चाहता हूं जिसमें libOpenCL.so सिस्टम लाइब्रेरी के रूप में स्थापित नहीं है। ऐसा करने के लिए, libOpenCL.so परियोजना निर्माण पेड़ में है और सीएमकेलिस्ट सूची में एक पूर्ण पथ का उपयोग करके संदर्भित है। यह पूर्ण पथ यह सुनिश्चित करना है कि यदि सिस्टम libOpenCL.so स्थापित होता है तो इसका उपयोग नहीं किया जाता है।
हालांकि, अंतिम निष्पादन योग्य चलाने पर, सीएमके ने आरपीएथ के लिए पूर्ण पथ जोड़ा है जो लाइब्रेरी लोडर द्वारा उठाए गए libOpenCL.so के सिस्टम संस्करण को रोकता है और उपयोग किया जाता है।
सरल लगता है लेकिन मैं इसे काफी समझ नहीं सकता।
धन्यवाद!
आप सीएमएके को स्वत: उत्पन्न करने की बजाय आरपीएटीएच सेटिंग्स के लिए पूर्ण नियंत्रण ले सकते हैं। विकी के बारे में विकी देखें [सीएमके में आरपीएटीएच को सौंपना] (https://cmake.org/Wiki/CMake_RPATH_handling)। – Tsyvarev