2009-06-30 7 views
6

जैसा कि मैंने पिछले प्रश्न में कहा था, मैं वीसी ++ से QtCreator तक एक क्यूटी परियोजना को पोर्ट करने की योजना बना रहा हूं।कई libs के साथ QtCreator प्रोजेक्ट और एक exe

इस परियोजना में 4 सबप्रोजेक्ट होते हैं: उनमें से 3 libs हैं और अंतिम व्यक्ति exe बनाता है। उपप्रोजेक्ट स्तरित हैं, जिसका अर्थ यह है कि प्रत्येक परत संकलित और समय के आधार पर परतों को निर्भर करता है।

root 
    lib1 
    lib2 
    lib3 
    main 

मैं खरोंच से QtCreator में उप से प्रत्येक बनाया है: इस प्रकार

फ़ाइलें आयोजन किया जाता है। प्रत्येक फ़ोल्डर में एक ही नाम के साथ एक प्रो फ़ाइल होती है (उदा: lib1 -> lib1.pro)। इस दृष्टिकोण का उपयोग करके मैंने अंतिम परियोजनाओं को छोड़कर सभी परियोजनाओं का निर्माण किया है जो निष्पादन योग्य को जोड़ना चाहिए। मैं लिंकर त्रुटियों जो मैं तय हो रही थी मैन्युअल रूप से संपादित समर्थक फ़ाइल और नीचे दिए गए कोड को जोड़कर:

LIBS += ../path/lib1.a \ 
    ../path/lib2.a \ 
    ../path/lib3.a 

सभी ठीक है, अब lib3 शिकायत है कि यह lib2 और lib1 से प्रतीकों नहीं मिल सकता है को छोड़कर। Lib2.pro फ़ाइल में Addind LIBS काम नहीं करता है।

मुझे एहसास है कि मुझे क्यूटीक्रिएटर libs और execables के साथ काम करने का तरीका नहीं मिल रहा है। आप इस तरह की एक परियोजना को कैसे व्यवस्थित करेंगे ताकि यह सही ढंग से संकलित और लिंक हो सके?

उत्तर

4

समस्या पर काम करने के बाद, मुझे याद आया कि जीसीसी उपकरण श्रृंखला के लिए लिंकर पैरामीटर का क्रम महत्वपूर्ण है।

एलआईबीएस प्रविष्टियों को उलटाने से यह चाल चल गई।

3

आपको यह देखने में खुशी हुई कि आपको जवाब मिल गया है। आप यह भी जोड़ सकते हैं:

CONFIG += ordered 
अपने रूट निर्देशिका .pro फाइल करने के लिए

(इसे 'उपनिर्देशिका' प्रोफ़ाइल में ही मान्य है)। यह मेकफ़ाइल जेनरेट करने के लिए qmake को मजबूर करता है जो उस क्रम को संरक्षित करता है जिसमें आपने उन्हें सभी परिस्थितियों में सूचीबद्ध किया है।

+0

हां, मुझे इस विकल्प को दस्तावेज़ों में मिला है और मैं इस समय इसका उपयोग कर रहा हूं। अच्छा हिस्सा यह है कि मैं अपनी पूरी परियोजना को एक बार में लोड कर सकता हूं, बुरा हिस्सा यह है कि मैं व्यक्तिगत रूप से प्रत्येक lib का निर्माण नहीं कर सकता। :-) – rpg

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