2012-11-18 3 views
6

config 디렉터리 내의 모든 파일을 build 디렉터리로 복사하려면 다음 사용자 지정 명령을 사용하고 있습니다. 문제는 내가 .svn 디렉토리도 복사하는 것을 원하지 않는다는 것입니다. .svn 디렉토리를 제외하거나 특정 확장자의 파일을 복사하는 방법을 찾고 있습니다. 예 : xml 또는 conf 확장명의 파일 만 복사하고 싶습니다. 어떻게해야합니까? 그것은 .svn 하위 디렉토리에있는 모든 파일을 얻을 수있는 유사한 과정이다CMake : 한 디렉터리에서 다른 디렉터리로 특정 파일 확장명을 복사하는 방법

# 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

관련 문제