2011-06-06 13 views
5

मैं सोच रहा था कि make clean को सेमकेक में बाहरी निर्भरताओं को फिर से बनाने से रोकने का कोई तरीका है या नहीं। मैं तीसरे पक्ष सी ++ पुस्तकालयों का निर्माण करने के लिए ExternalProject का उपयोग कर रहा हूं, और अगर मुझे make clean है तो भी उन्हें पुनर्निर्मित करने की आवश्यकता नहीं है।सेमेक - सफाई से 'साफ करने' को रोकने से बाहरी प्रोजेक्ट

दूसरी ओर, मैं make really-clean कह सकता हूं, जो कि निर्भरता को भी साफ़ करता है, कह सकता है। क्या ऐसा करने का कोई अच्छा तरीका है?

धन्यवाद।

उत्तर

4

मुझे लगता है कि आप निर्भरता फ़ाइलों को बनाने के लिए ADD_CUSTOM_COMMAND, या ADD_LIBRARY या अन्य ADD_ * का उपयोग करते हैं।

अपने ExternalProject अपने आप निर्देशिका है और आपको लगता है कि निर्देशिका में CMakeLists.txt डाल सकते हैं, तो आप आसान है कि CMakeLists.txt में निम्नलिखित रख सकते हैं:

SET_DIRECTORY_PROPERTIES(PROPERTIES CLEAN_NO_CUSTOM 1) 

इसलिए उन निर्भरता फ़ाइलें साफ नहीं किया जाएगा।

यदि नहीं, तो आपको बाह्य निर्भरताओं को आउटपुट फ़ाइलों के रूप में रखने से बचने की आवश्यकता हो सकती है। उदाहरण के लिए, आप

ADD_CUSTOM_COMMAND(OUTPUT libdep 
    COMMAND dep_gen_cmd 
    .... 
) 

ADD_CUSTOM_COMMAND(OUTPUT prj 
    .... 
    DEPENDS libdep 
) 

का उपयोग करता है, तो फिर तुम करने के लिए इसे बदलने की जरूरत है:

ADD_CUSTOM_TARGET(libdep_gen 
     COMMAND dep_gen_cmd 
     ... 
) 

ADD_CUSTOM_COMMAND(OUTPUT prj 
    COMMAND test -e libdep || make libdep_gen 
    ... 
) 
संबंधित मुद्दे