मैं क्यूटी निर्माता आरसी 1 (संस्करण 0.9.2) द्वारा निर्मित एक परियोजना में बाहरी पुस्तकालय कैसे जोड़ सकता हूं? उदाहरण के लिए, Win32 फ़ंक्शन EnumProcesses()
को बनाने के लिए प्रोजेक्ट में जोड़े जाने के लिए Psapi.lib
की आवश्यकता है।क्यूटी निर्माता परियोजना में बाहरी पुस्तकालय जोड़ना
उत्तर
यह करने के लिए उचित तरीके से इस तरह है:
LIBS += -L/path/to -lpsapi
इस तरह यह क्यूटी द्वारा समर्थित सभी प्लेटफार्मों पर काम करेंगे। विचार यह है कि आपको निर्देशिका को पुस्तकालय नाम से अलग करना है (विस्तार के बिना और बिना किसी 'lib' उपसर्ग के)। बेशक, यदि आप एक विंडोज विशिष्ट lib सहित हैं, यह वास्तव में कोई फर्क नहीं पड़ता।
मामले में आप परियोजना निर्देशिका में अपने lib फ़ाइलों को स्टोर करना चाहते हैं, तो आप उन्हें $$_PRO_FILE_PWD_
चर के साथ संदर्भित कर सकते हैं, जैसे:
LIBS += -L"$$_PRO_FILE_PWD_/3rdparty/libs/" -lpsapi
त्रुटि का मतलब अतिरिक्त अतिरिक्त पथ शामिल होने के कारण है। इसे जोड़ने का प्रयास करें: INCLUDEPATH + = C: \ path \ to \ include \ files \ आशा है कि यह काम करता है। सम्मान।
LIBS + = C: \ Program Files \ OpenCV \ lib
काम नहीं करेगा क्योंकि आप प्रोग्राम फ़ाइलों में श्वेत-स्थान का उपयोग कर रहे हैं। इस मामले में आपको उद्धरण जोड़ना होगा, इसलिए परिणाम इस तरह दिखेगा: LIBS + = "सी: \ प्रोग्राम फ़ाइलें \ OpenCV \ lib"। मैं गैर सफेद-अंतरिक्ष स्थानों ;-)
क्यूटी (निर्माता) के नवीनतम संस्करण हमेशा (सिंगल) निर्देशिका विभाजक के रूप में आगे slashes चाहते हैं।एकमात्र अपवाद तब होता है जब आप विंडोज के तहत "सिस्टम" कमांड का उपयोग करते हैं। फिर आपको सिस्टम को एक पिछड़ा पिछड़ा स्लैश खिलाने की ज़रूरत है, जो दो पिछड़े स्लैश कहने के लिए है। दो पिछड़े स्लैश के साथ सभी आगे की स्लैश को प्रतिस्थापित करने के लिए निम्नानुसार किया जा सकता है: 'WINDIR = $$ DIR',' WINDIR ~ = s, /, \\, g' – adlag
और जोड़ने के लिए कई पुस्तकालय फाइलों में रखकर पुस्तकालयों आप नीचे के रूप में लिख सकते हैं की सिफारिश:
INCLUDEPATH * = ई:/DebugLibrary/VTK ई:/DebugLibrary/VTK/आम ई:/DebugLibrary/VTK/छनन ई:/DebugLibrary/VTK/GenericFiltering ई:/DebugLibrary/VTK/ग्राफिक्स ई:/DebugLibrary/VTK/GUISupport/क्यूटी ई:/DebugLibrary/VTK/हाइब्रिड ई:/डीबग लाइब्रेरी/वीटीके/इमेजिंग ई:/डीबग लाइब्रेरी/वीटीके/आईओ ई:/डीबग्लब्रेरी/वीटीके/समांतर ई:/डीबग्लब्रेरी/वीटीके/रेंडरिंग ई:/डीबग्लब्रेरी/वीटीके/यूटिलिटीज ई:/DebugLibrary/VTK/VolumeRendering ई:/DebugLibrary/VTK/विजेट ई:/DebugLibrary/VTK/
LIBS रैपिंग * = -ले:/DebugLibrary/VTKBin/bin/रिहाई -lvtkCommon -lvtksys - lQVTK -lvtkWidgets -lvtkRendering -lvtkGraphics -lvtkImaging -lvtkIO -lvtkFiltering -lvtkDICOMParser -lvtkpng -lvtktiff -lvtkzlib -lvtkjpeg -lvtkexpat -lvtkNetCDF -lvtkexoIIc -lvtkftgl -lvtkfreetype -lvtkHybrid -lvtkVolumeRendering -lQVTKWidgetPlugin -lvtkGenericFiltering
यदि आप चाहते हैं केवल अपने आवेदन का उपयोग करने के बजाए, ग्राहकों की मशीनों पर अपने आवेदन को तैनात करने के लिए, हम पाते हैं कि LIBS+= -Lxxx -lyyy
विधि समस्या नहीं होने पर भ्रम पैदा कर सकती है।
हम क्यूटी का उपयोग कर लिनक्स, मैक और विंडोज के लिए अनुप्रयोग विकसित करते हैं। हम पूर्ण, स्टैंड-अलोन एप्लिकेशन भेजते हैं।इसलिए तैनाती पैकेज में सभी गैर-सिस्टम पुस्तकालयों को शामिल किया जाना चाहिए। हम चाहते हैं कि हमारे ग्राहक सभी ओएस के लिए एक ही यूएसबी स्टिक से एप्लिकेशन चलाने में सक्षम हों। प्लेटफार्म संगतता के कारणों के लिए यूएसबी स्टिक को फिर FAT32 के रूप में स्वरूपित किया जाना चाहिए, जो (लिनक्स) सिम्लिंक का समर्थन नहीं करता है।
हम LIBS+= -Lxxx -lyyy
मुहावरा भी एक ब्लैक बॉक्स की ज्यादा पाया:
हम वास्तव में नहीं पता है कि filepath (स्थिर या गतिशील) पुस्तकालय कि लिंकर द्वारा पाया गया है की है। यह असुविधाजनक है। हमारे मैक लिंकर को नियमित रूप से उन लोगों से अलग-अलग libs मिलते हैं जिन्हें हमने सोचा था कि इसका उपयोग किया जाना चाहिए। यह ओपनएसएसएल पुस्तकालयों के साथ कई बार हुआ जहां मैक लिंकर ने हमारे अनुरोधित संस्करण की बजाय अपने स्वयं के पुराने, असंगत - ओपनएसएसएल संस्करण को पाया और उपयोग किया।
हम यह बर्दाश्त नहीं कर सकते कि लिंकर पुस्तकालयों में सिम्लिंक का उपयोग करता है क्योंकि यह तैनाती पैकेज को तोड़ देगा।
हम लाइब्रेरी के नाम से देखना चाहते हैं कि हम एक स्थिर या गतिशील लाइब्रेरी को लिंक करते हैं या नहीं।
तो हमारे विशेष मामले के लिए हम केवल पूर्ण फ़ाइलपैथ का उपयोग करते हैं और जांचते हैं कि वे मौजूद हैं या नहीं। हम सभी सिम्लिंक हटा देते हैं।
सबसे पहले हम यह पता लगाते हैं कि हम किस ऑपरेटिंग सिस्टम का उपयोग कर रहे हैं और इसे CONFIG चर में डाल दें। और, लिनक्स 64 बिट के लिए उदाहरण के लिए, तो के लिए:
linux64 {
LIBSSL= $$OPENSSLPATH/linux64/lib/libssl.a
!exists($$LIBSSL): error ("Not existing $$LIBSSL")
LIBS+= $$LIBSSL
LIBCRYPTO= $$OPENSSLPATH/linux64/lib/libcrypto.a
!exists($$LIBCRYPTO): error ("Not existing $$LIBCRYPTO")
LIBS+= $$LIBCRYPTO
}
सभी निर्भरता तैनाती पैकेज में कॉपी किया जा सकता, क्योंकि हम उनकी filepaths पता है।
मैं पूर्णता की बोरी के लिए जोड़ना चाहता हूं कि आप केवल लाइब्रेरी पैथ भी जोड़ सकते हैं जहां यह एक निर्भर पुस्तकालय की तलाश करेगा (जिसे सीधे आपके कोड में संदर्भित नहीं किया जा सकता है लेकिन आपके द्वारा उपयोग की जाने वाली लाइब्रेरी की आवश्यकता हो सकती है) ।
तुलना के लिए, यह LIBPATH पर्यावरण के अनुरूप होगा लेकिन क्यूटी निर्माता में इसकी तरह अस्पष्ट है और अच्छी तरह से प्रलेखित नहीं है।
तरह से मैं इस के आसपास आया था पीछा कर रहा है:
LIBS += -L"$$_PRO_FILE_PWD_/Path_to_Psapi_lib/"
अनिवार्य रूप से यदि आप वास्तविक लाइब्रेरी नाम प्रदान नहीं करते हैं, यह करने के लिए जहां यह निर्भर पुस्तकालयों खोज करेंगे पथ कहते हैं। सिंटैक्स में अंतर छोटा है लेकिन यह केवल पुस्तकालयों को आपूर्ति करने के लिए बहुत उपयोगी है जहां निर्भर पुस्तकालयों की तलाश है। कभी-कभी यह प्रत्येक दर्द व्यक्तिगत लाइब्रेरी की आपूर्ति करने के लिए दर्द होता है जहां आप जानते हैं कि वे सभी कुछ निश्चित फ़ोल्डर में हैं और क्यूटी निर्माता उन्हें उठाएंगे।
- 1. क्यूटी निर्माता बाहरी पुस्तकालय जोड़ना (अब भी: शामिल फ़ाइल नहीं खोल सकता: 'जीएल/glew.h')
- 2. क्यूटी निर्माता
- 3. क्यूटी निर्माता
- 4. क्यूटी निर्माता
- 5. क्यूटी निर्माता
- 6. क्यूटी निर्माता
- 7. क्यूटी निर्माता
- 8. क्यूटी-निर्माता
- 9. क्यूटी निर्माता
- 10. क्यूटी निर्माता
- 11. क्यूटी निर्माता
- 12. क्यूटी निर्माता
- 13. क्यूटी निर्माता
- 14. क्यूटी निर्माता
- 15. क्यूटी निर्माता
- 16. क्यूटी निर्माता
- 17. क्यूटी निर्माता
- 18. क्यूटी-निर्माता
- 19. केवल क्यूटी निर्माता
- 20. फोर्स क्यूटी निर्माता
- 21. क्यूटी निर्माता बनाना MinGW
- 22. मेट्रो यूआई में बाहरी पुस्तकालय
- 23. क्यूटी निर्माता, त्रुटि संदेश
- 24. क्यूटी निर्माता: QtGui में त्रुटि
- 25. क्यूटी निर्माता में उत्पादन डिबगिंग
- 26. क्यूटी परियोजना
- 27. क्यूटी परियोजना
- 28. कक्षा पुस्तकालय परियोजना
- 29. मैं क्यूटी निर्माता
- 30. मैं क्यूटी निर्माता
यह इस पोस्ट के लिए सही जवाब है। – sivabudh
+1 क्योंकि यह क्रॉस प्लेटफ़ॉर्म समाधान पर विचार करता है, सबसे पूरा उत्तर। – morde
क्या लाइब्रेरी पथ के रूप में पर्यावरण चर निर्दिष्ट करना संभव है? मैं पूछ रहा हूं क्योंकि .pro फ़ाइल में हार्डकोडेड पथ नाम लिखना चीजों को तोड़ देगा यदि एक परियोजना कई लोगों द्वारा विकसित की जाती है, जिनके पास एक ही स्थान पर सभी पुस्तकालय स्थापित नहीं हो सकते हैं। – antred