CMakeCopyIfDifferent.cmake
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:1k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. # -*- cmake -*-
  2. # Taken from http://www.cmake.org/Wiki/CMakeCopyIfDifferent
  3. # Generates a rule to copy each source file from source directory to destination directory.
  4. #
  5. # Typical use -
  6. #
  7. # SET(SRC_FILES head1.h head2.h head3.h)
  8. # COPY_IF_DIFFERENT( /from_dir /to_dir IncludeTargets ${SRC_FILES})
  9. # ADD_TARGET(CopyIncludes ALL DEPENDS ${IncludeTargets})
  10. MACRO(COPY_IF_DIFFERENT FROM_DIR TO_DIR TARGETS)
  11. # Macro to implement copy_if_different for a list of files
  12. # Arguments - 
  13. #   FROM_DIR - this is the source directory
  14. #   TO_DIR   - this is the destination directory
  15. #   TARGETS  - A variable to receive a list of targets
  16. #   FILES    - names of the files to copy 
  17. #              TODO: add globing. 
  18. SET(AddTargets "")
  19. FOREACH(SRC ${ARGN})
  20.     GET_FILENAME_COMPONENT(SRCFILE ${SRC} NAME) 
  21.     IF("${FROM_DIR}" STREQUAL "")
  22.         SET(FROM ${SRC})
  23.     ELSE("${FROM_DIR}" STREQUAL "")
  24.         SET(FROM ${FROM_DIR}/${SRC})
  25.     ENDIF("${FROM_DIR}" STREQUAL "")        
  26.     IF("${TO_DIR}" STREQUAL "")
  27.         SET(TO ${SRCFILE})
  28.     ELSE("${TO_DIR}" STREQUAL "")
  29.         SET(TO   ${TO_DIR}/${SRCFILE})
  30.     ENDIF("${TO_DIR}" STREQUAL "")
  31.     ADD_CUSTOM_COMMAND(
  32.         OUTPUT  "${TO}"
  33.         COMMAND ${CMAKE_COMMAND} -E copy_if_different ${FROM} ${TO}
  34.         DEPENDS ${FROM}
  35.         COMMENT "Copying ${SRCFILE} ${TO_DIR}"
  36.         )
  37.     SET(AddTargets ${AddTargets} ${TO})
  38. ENDFOREACH(SRC ${ARGN})
  39. SET(${TARGETS} ${AddTargets})
  40. ENDMACRO(COPY_IF_DIFFERENT FROM_DIR TO_DIR TARGETS)