2012-11-18 16 views
6

में केवल विशिष्ट फ़ाइल एक्सटेंशन की प्रतिलिपि कैसे करें I config निर्देशिका में build निर्देशिका में सभी फ़ाइलों की प्रतिलिपि बनाने के लिए निम्न कस्टम कमांड का उपयोग कर रहा हूं। समस्या यह है कि मैं .svn निर्देशिका भी कॉपी नहीं करना चाहता हूं। मैं .svn निर्देशिका या विशिष्ट एक्सटेंशन वाले फ़ाइलों की प्रतिलिपि बनाने के लिए एक तरीका ढूंढ रहा हूं। जैसे मैं प्रतिलिपि बनाने के लिए केवल xml या conf एक्सटेंशन वाली फ़ाइलों को चाहता हूं। मुझे क्या करना चाहिए? यह इसी तरह की प्रक्रिया सभी फाइलों .svn उपनिर्देशिका में नहीं पाने के लिए हैसीएमके: एक निर्देशिका से केवल

# Gather list of all .xml and .conf files in "/config" 
file(GLOB ConfigFiles ${CMAKE_SOURCE_DIR}/config/*.xml 
         ${CMAKE_SOURCE_DIR}/config/*.conf) 

foreach(ConfigFile ${ConfigFiles}) 
    add_custom_command(TARGET MyTarget PRE_BUILD 
        COMMAND ${CMAKE_COMMAND} -E 
         copy ${ConfigFile} $<TARGET_FILE_DIR:MyTarget>) 
endforeach() 

:

add_custom_command(TARGET MyTarget PRE_BUILD 
        COMMAND ${CMAKE_COMMAND} -E copy_directory 
         ${CMAKE_SOURCE_DIR}/config $<TARGET_FILE_DIR:MyTarget>) 

related question

उत्तर

10

सिर्फ .xml और .conf फ़ाइलों की प्रतिलिपि के लिए, आपको file(GLOB ...) आदेश का उपयोग कर सकते हैं

# Gather list of all files in "/config" 
file(GLOB ConfigFiles RELATIVE ${CMAKE_SOURCE_DIR}/config 
    ${CMAKE_SOURCE_DIR}/config/*) 

# Gather list of all files in "/config/.svn" 
file(GLOB SvnConfigFiles RELATIVE ${CMAKE_SOURCE_DIR}/config 
    ${CMAKE_SOURCE_DIR}/config/.svn/*) 

# Remove ".svn" and its contents from the list 
list(REMOVE_ITEM ConfigFiles .svn ${SvnConfigFiles}) 

foreach(ConfigFile ${ConfigFiles}) 
    add_custom_command(TARGET MyTarget PRE_BUILD 
        COMMAND ${CMAKE_COMMAND} -E 
         copy ${CMAKE_SOURCE_DIR}/config/${ConfigFile} 
           $<TARGET_FILE_DIR:MyTarget>) 
endforeach() 
+0

से अधिक आप बहुत बहुत! – Meysam

+0

@Meysam कोई समस्या नहीं :-) – Fraser

+0

फ़ाइलों की सूची विलय करने के बजाय, ऐसा लगता है कि सभी फ़ाइल प्रकारों को एक पंक्ति में लिखना संभव है। – Meysam