2014-10-10 6 views
5

मेरे पास सीएमके में कुछ डीबग जानकारी है ताकि यह जांच सके कि मैंने किसी प्रोजेक्ट को संकलित करने की आवश्यकता नहीं है या नहीं। इस कोड में propertly काम करता है:लक्ष्य लिंक लाइब्रेरीज़ जानकारी प्राप्त करने का प्रयास करते समय संपत्ति रिक्त वैरिएबल प्राप्त करें

# Include DIRECTORIES 
    GET_PROPERTY(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES) 
    FOREACH(dir ${dirs}) 
    MESSAGE(STATUS " * Include directory: '${dir}'") 
    ENDFOREACH() 

लेकिन जब मैं वर्तमान प्रोजेक्ट में जुड़े सभी पुस्तकालयों की जांच करने के लिए प्रयास करें, मैं एक खाली चर मिलती है:

# Linking against 
     GET_PROPERTY(libtargets DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY LINK_LIBRARIES) 
     MESSAGE("Libs: ${libtargets}") 
     FOREACH(libtarget ${libtargets}) 
     MESSAGE(STATUS " * Target Link library: '${libtarget}'") 
     ENDFOREACH() 

जाँच हो रही है CMake documentation 3.0 यह ठीक लगता है, लेकिन मैं डॉन ' टी को जानने के लिए मूल्य क्या उपलब्ध हैं। मैं ADD_LIBRARY/ADD_EXECUTABLE

बनाने के बाद जानकारी मुद्रित करता हूं क्या LINK_LIBRARIES GET_PROPERTY के लिए गलत मान है? मैं वह जानकारी कैसे प्राप्त कर सकता हूं?

उत्तर

5

निर्देशिकाएँ यह पेज के अनुसार LINK_LIBRARIES संपत्ति की जरूरत नहीं है:

http://www.cmake.org/cmake/help/v3.0/manual/cmake-properties.7.html?highlight=properties%20targets#properties-on-directories

इसके अलावा मुझे लगता है कि target_link_libraries केवल लक्ष्य है जिस पर वह, कहा जाता था निर्देशिका पर नहीं पर असर पड़ेगा। इसके बजाए get_target_property का उपयोग करने का प्रयास करें।

+1

GET_TARGET_PROPERTY (libtargets $ {PROJECT_NAME} LINK_LIBRARIES) निजी रूप से काम करता है। धन्यवाद। – vgonisanz

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

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