2012-11-18 14 views
6

içine bir dizinden sadece belirli dosya uzantılarını nasıl kopyalanır. Sorun şu ki, .svn dizininin de kopyalanmasını istemiyorum. Ben .svn dizin dışlamak ya da belirli uzantılı dosyaları kopyalamak için bir yol arıyorum. Örneğin. Ben xml veya conf uzantılı tek dosyalar kopyalanabilir istiyorum. Ne yapmalıyım? Bu .svn alt dizinindeki tüm dosyaları almak için benzer bir süreçCKağıt: Ben <code>build</code> dizine <code>config</code> dizin içindeki tüm dosyaları kopyalamak için aşağıdaki özel komutu kullanıyorum başka

# 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

cevap

10

sadece .xml ve .conf dosyaları kopyalamak için, file(GLOB ...) komutunu kullanabilirsiniz

# 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

daha k sen çok – Meysam

+0

yerine dosyaların listesini birleştirme, bunun bir satırda tüm dosya türlerini yazmak mümkün görünüyor – Fraser

+0

:-) Sorun @Meysam. – Meysam

İlgili konular