2013-01-15 10 views
8

बंटू 11.04 में काम करने के लिए निर्माण का उपयोग, अब 12.04 में नहीं है।लक्ष्य बनाने के लिए कोई नियम /usr/lib/someLib.so

someLib.so के स्थान के साथ एक संघर्ष है। यही है, यह गलत स्थान में देख रहा है। /usr/lib/here/someLib.so सही स्थान है।

जब मैं सीसीएमके में 'सी' कॉन्फ़िगरेशन cmd चलाता हूं, तो यह एक बार संघर्ष को देखता है। अब सीसीएमके अब शिकायत नहीं करता है, लेकिन गलती अभी भी वहां है। runtime library [someLib.so] in /usr/lib may be hidden by files in: /usr/lib/here

CMakeLists.txt में लाइनों का वह निर्माण अं कारण हैं:

ADD_EXECUTABLE(test main.cpp) 
TARGET_LINK_LIBRARIES(test moreStuff evenMoreStuff) 

मैं build.make फ़ाइल में समस्या देखते हैं। जो सीसीएमके द्वारा उत्पन्न होता है। मैं यह नहीं समझ सकता कि सीसीएमके को यह विचार क्यों मिल रहा है कि someLib.so के बजाय /usr/lib/ पर है। मुझे लगता है कि यह कहीं SET() कथन होगा। मुझे यह नहीं मिल रहा है।

1) कॉन्फ़िगरेशन फ़ाइल (सीसीएमके 'सी' cmd) क्या कहा जाता है? यह कहाँ होगा (उसी डीआईआर?)? मुझे लगता है कि अगर मैं इसे डेल करता हूं, तो मैं फिर से गलती देख पाऊंगा। (CMakeFile.txt को बदलना ऐसा प्रतीत नहीं होता है।)
2) मैं कैसे पता लगा सकता हूं कि someLib.so का स्थान कहां सेट किया जा रहा है? (मैं क्या देख रहा हूं?)

मुझे CCMAKE से नफरत है। धन्यवाद

उत्तर

1

मैं कहूंगा कि यह find_library कॉल में से एक के साथ एक मुद्दा है। अगर मुझे सही याद है तो यह तब हुआ जब आपका पर्यावरण दो अलग-अलग स्थानों पर इशारा कर रहा था जिसमें दोनों एक ही नाम के साथ एक लाइब्रेरी फ़ाइल थी।

आप इसे अपने पर्यावरण को बदलकर या तो होने से रोक सकते हैं ताकि यह दोनों स्थानों को इंगित न कर सके या cm_library कॉल के साथ NO_ * _ पथ का उपयोग करें ताकि सेमेक को दोनों स्थानों को ढूंढने से रोका जा सके (उदाहरण के लिए आप अपना रास्ता परिभाषित कर सकते हैं इस find_library और उपयोग NO_DEFAULT_PATH पर्यावरण रास्तों का उपयोग करने से cmake को रोकने के लिए के लिए - दस्तावेज़ देखें: http://www.cmake.org/cmake/help/v2.8.10/cmake.html#command:find_library)

find_library (someLib_location नाम someLib के रास्ते/usr/lib/यहाँ/NO_DEFAULT_PATH)

1 के संबंध में) मुझे लगता है कि वे कहा जाता है सीएमकेकैच फाइलें लेकिन जाने का सबसे सुरक्षित तरीका बस पूरी बिल्ड संरचना को हटा देता है (अगर आप बाहर निकल रहे हैं तो कोई समस्या नहीं है स्रोत)

2 के संबंध में) मैं पुस्तकालय नाम से CMakeList.txt फ़ाइलों throug खोज करेंगे (.so प्रत्यय और) उन probbably CMAKE_FIND_LIBRARY_PREFIXES और CMAKE_FIND_LIBRARY_SUFFIXES चर द्वारा जोड़ रहे हैं

+1

someLib.so केवल एक में मौजूद हैं के रूप में lib उपसर्ग के बिना जगह। सीएमकेई को कुछ बता रहा है कि यह/usr/lib में गलत तरीके से मौजूद है। सीएमकेईई को पर्यावरण का डेटा कहां मिलता है? क्या कोई सीएमकेईई आदेश है जो करता है? एनवी में कुछ भी नहीं है जो इसे स्थापित कर रहा है। क्या अन्य सिस्टम पर्यावरण फाइलें/सेटिंग्स हैं जिन्हें मुझे जांचने की आवश्यकता है? धन्यवाद – Doug

+1

एचएम मुझे कभी भी इस तरह का कोई मुद्दा नहीं था ... आपको इस प्रश्न को सीएमके मेलिंग सूची पर पूछने की कोशिश करनी चाहिए http://www.cmake.org/cmake/help/mailing.html –

+1

यह मुद्दा एक परियोजना थी 'सीएमकेई फाइलें अन्य परियोजनाओं 'सीएमकेई फाइलों का संदर्भ देती हैं। तो एक परियोजना को एक और परियोजनाओं की सेटिंग्स विरासत में मिला। तो एक दुखद तरीके से, यह परियोजना सेटिंग्स किसी अन्य, या किसी अन्य, या किसी अन्य से बंधी हुई हैं .... – Doug