2013-02-20 21 views
18

के लिए कोई लाइब्रेरी डिस्टिनेशन नहीं दिया गया है जब सीएमके के साथ एक ओपनसोर्स प्रोजेक्ट का निर्माण करते समय (मेरे मामले में, यह नींबू ग्राफ लाइब्रेरी थी), मुझे यह त्रुटि मिली जब मैंने -DBUILD_SHARED_LIBS=1:सीएमके त्रुटि: साझा लाइब्रेरी लक्ष्य

के माध्यम से साझा लिबरियां बनाने की कोशिश की
TARGETS given no LIBRARY DESTINATION for shared library target 

यह त्रुटि कहां से आती है और मैं इसे कैसे ठीक करूं?

उत्तर

25

मेरी CMakeLists.txt में, मेरा आदेश इन्सटाल कोई लाइब्रेरी पैरामीटर था।

इस से बदल रहा है:

INSTALL(
    TARGETS lemon 
    ARCHIVE DESTINATION lib 
    COMPONENT library 
) 
इस के लिए

:

INSTALL(
    TARGETS lemon 
    ARCHIVE DESTINATION lib 
    LIBRARY DESTINATION lib # <-- Add this line 
    COMPONENT library 
) 

मेरी समस्या ठीक हो गई।

7

मैं यह मिल गया ... एक और कारण यह होता है जब आप किसी साझा लाइब्रेरी बनाने है

add_library ($ {नाम} साझा स्रोत)

तो

जब CMake विंडोज प्लेटफॉर्म पर स्थापित आदेश तक पहुँच जाता है, यह इन त्रुटि की शिकायतें, समाधान

if(WIN32) 
    install(TARGETS ${NAME} 
    RUNTIME DESTINATION path) 
else() 
    install(TARGETS ${NAME} 
    LIBRARY DESTINATION path) 
endif() 
+1

मुझे लगता है कि आपका मतलब है 'LIBRARY'' के बजाय "RUNTIME'" का मतलब है। –

+0

ठीक है, ठीक किया। –

+1

अपने उदाहरण में 'path' के दो उपयोगों के अलग अलग हैं? यदि नहीं, तो आप 'इंस्टॉल (TARGETS $ {NAME} RUNTIME DESTINATION पथ लाइब्रेरी डिस्टिनेशन पथ ) के साथ समान प्रभाव प्राप्त कर सकते हैं। – Unapiedra

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