CMakeCopyIfDifferent: Difference between revisions
From KitwarePublic
Jump to navigationJump to search
No edit summary |
mNo edit summary |
||
Line 4: | Line 4: | ||
Typical use - | Typical use - | ||
SET(SRC_FILES head1.h head2.h head3.h) | SET(SRC_FILES head1.h head2.h head3.h)<br> | ||
COPY_IF_DIFFERENT( /from_dir /to_dir ${SRC_FILES} IncludeTargets "Includes") | COPY_IF_DIFFERENT( /from_dir /to_dir ${SRC_FILES} IncludeTargets "Includes")<br> | ||
ADD_TARGET(CopyIncludes ALL DEPENDS ${IncludeTargets}) | ADD_TARGET(CopyIncludes ALL DEPENDS ${IncludeTargets})<br> | ||
will generate rules that look | will generate rules that look |
Revision as of 20:57, 12 December 2005
Generates a rule to copy each source file from source directory to destination directory.
Typical use -
SET(SRC_FILES head1.h head2.h head3.h)
COPY_IF_DIFFERENT( /from_dir /to_dir ${SRC_FILES} IncludeTargets "Includes")
ADD_TARGET(CopyIncludes ALL DEPENDS ${IncludeTargets})
will generate rules that look
CopyIncludes: $(CopyIncludes_DEPEND_LIBS) \
Include\head1.h \
Include\head2.h \
Include\head3.h
Include\head1.h:
@echo Building Copying head1.h /to_dir head1.h...
cmake.exe -E copy_if_different /from_dir/head1.h /to_dir/head1.h
MACRO(COPY_IF_DIFFERENT FROM_DIR TO_DIR FILES TARGETS TAGS) # Macro to implement copy_if_different for a list of files # Arguments - # FROM_DIR - this is the source directory # TO_DIR - this is the destination directory # FILES - names of the files to copy # TODO: add globing. # TARGETS - List of targets # TAGS - Since only the file name is used # to generate rules, pre-pend a user # supplied tag to prevent duplicate rule errors. SET(AddTargets "") FOREACH(SRC ${FILES}) GET_FILENAME_COMPONENT(SRCFILE ${SRC} NAME) # Command to copy the files to ${STEP1}/src, if changed. SET(TARGET "${TAGS}/${SRCFILE}") IF("${FROM_DIR}" STREQUAL "") SET(FROM ${SRC}) ELSE("${FROM_DIR}" STREQUAL "") SET(FROM ${FROM_DIR}/${SRC}) ENDIF("${FROM_DIR}" STREQUAL "") IF("${TO_DIR}" STREQUAL "") SET(TO ${SRCFILE}) ELSE("${TO_DIR}" STREQUAL "") SET(TO ${TO_DIR}/${SRCFILE}) ENDIF("${TO_DIR}" STREQUAL "") ADD_CUSTOM_COMMAND( OUTPUT ${TARGET} COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${FROM} ${TO} COMMENT "Copying ${SRCFILE} ${TO_DIR}" ) SET(AddTargets ${AddTargets} ${TARGET}) ENDFOREACH(SRC ${FILES}) SET(${TARGETS} ${AddTargets}) ENDMACRO(COPY_IF_DIFFERENT FROM_DIR TO_DIR FILES TARGETS TAGS)