You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
3.1 KiB
CMake
97 lines
3.1 KiB
CMake
#
|
|
# Utility macros for copying files
|
|
#
|
|
# Last update: 9th January 2013
|
|
#
|
|
|
|
#
|
|
# Create a target for copying files.
|
|
#
|
|
if (NOT TARGET copy_files)
|
|
add_custom_target(copy_files ALL)
|
|
endif()
|
|
|
|
#
|
|
# Create a variable to keep track of the number of copy files targets created.
|
|
#
|
|
if (NOT copy_target_count)
|
|
set(copy_target_count 0)
|
|
endif (NOT copy_target_count)
|
|
set(copy_target_count ${copy_target_count} CACHE INTERNAL "" FORCE)
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Macro: COPY_FILES
|
|
#-------------------------------------------------------------------------------
|
|
#
|
|
# Description:
|
|
# Adds a command to the build target 'copy_files' which copies files matching
|
|
# the specifeid globbing expression from the specified source directory to
|
|
# the specified destination directory.
|
|
#
|
|
# Usage:
|
|
# COPY_FILES(SRC_DIR GLOB_PAT DST_DIR)
|
|
#
|
|
# Arguments:
|
|
# - SRC_DIR : The source directory containging files to be copied.
|
|
# - GLOB_PAT : globbing expression used to match files for copying.
|
|
# - DST_DIR : The destination directory where files are to be copied to.
|
|
#
|
|
# Example:
|
|
# copy_files(${CMAKE_CURRENT_SOURCE_DIR} *.dat ${CMAKE_CURRENT_BINARY_DIR})
|
|
# Will copy all files in the current source directory with the extension
|
|
# '.dat' into the current binary directory.
|
|
#
|
|
macro(COPY_FILES SRC_DIR GLOB_PAT DST_DIR)
|
|
file(GLOB file_list
|
|
RELATIVE ${SRC_DIR}
|
|
${SRC_DIR}/${GLOB_PAT})
|
|
math(EXPR copy_target_count '${copy_target_count}+1')
|
|
set(copy_target_count ${copy_target_count} CACHE INTERNAL "" FORCE)
|
|
set(target "copy_files_${copy_target_count}")
|
|
add_custom_target(${target})
|
|
foreach(filename ${file_list})
|
|
set(src "${SRC_DIR}/${filename}")
|
|
set(dst "${DST_DIR}/${filename}")
|
|
add_custom_command(TARGET ${target} PRE_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy ${src} ${dst}
|
|
COMMENT "copying: ${src} to ${dst} " VERBATIM
|
|
)
|
|
endforeach(filename)
|
|
#add_dependencies(copy_files ${target})
|
|
add_dependencies(copy_files crowxmr)
|
|
endmacro(COPY_FILES)
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Macro: COPY_FILE
|
|
#-------------------------------------------------------------------------------
|
|
#
|
|
# Description:
|
|
# Adds a command to the build target 'copy_files' which copies the specified
|
|
# file to the specified destination.
|
|
#
|
|
# Usage:
|
|
# COPY_FILE(SRC DST)
|
|
#
|
|
# Arguments:
|
|
# - SRC : The source filename path (the file to be copied).
|
|
# - DST : The destiation filename path.
|
|
#
|
|
# Example:
|
|
# copy_file(
|
|
# ${CMAKE_CURRENT_SOURCE_DIR}/myfile.txt
|
|
# ${CMAKE_CURRENT_BINARY_DIR}/myfile.txt
|
|
# )
|
|
#
|
|
macro(COPY_FILE SRC DST)
|
|
math(EXPR copy_target_count '${copy_target_count}+1')
|
|
set(copy_target_count ${copy_target_count} CACHE INTERNAL "" FORCE)
|
|
set(target "copy_files_${copy_target_count}")
|
|
add_custom_target(${target})
|
|
add_custom_command(TARGET ${target} PRE_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy ${SRC} ${DST}
|
|
COMMENT "copying: ${SRC} to ${DST}" VERBATIM
|
|
)
|
|
add_dependencies(copy_files ${target})
|
|
endmacro(COPY_FILE)
|
|
|