On Wed, 2010-11-24 at 10:55 +0100, Michael Hertling wrote:
> On 11/24/2010 04:44 AM, Dominique Belhachemi wrote:
> > Hello,
> > 
> > I am using the following command in my CMakeLists.txt file to copy a
> > directory with all sub-directories from the source tree to a directory
> > in the binary tree.
> > 
> > file(COPY ${SRCDIR}
> >   DESTINATION ${CMAKE_BINARY_DIR}/${DSTDIR}/
> >   PATTERN .svn EXCLUDE
> > )
> > 
> > After adding this line to CMakeLists.txt and typing 'make' the command
> > is working like expected. But after adding a new file to ${SRCDIR} and
> > typing 'make' again, the new file doesn't get copied. I have to do a
> > 'touch CMakeLists.txt' first.
> > 
> > Is there a way to enforce the execution?
> 
> You might outsource the FILE(COPY ...) command to a CMake script which
> is invoked by a custom target, e.g. as in the following CMakeLists.txt:
> 
> CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR)
> PROJECT(COPYTREE NONE)
> ADD_CUSTOM_TARGET(copytree ALL
>     ${CMAKE_COMMAND}
>     -DSRC=${CMAKE_SOURCE_DIR}
>     -DDST=/tmp/${PROJECT_NAME}
>     -P ${CMAKE_SOURCE_DIR}/copytree.cmake
> )
> 
> The ${CMAKE_SOURCE_DIR}/copytree.cmake script simply looks like:
> 
> FILE(COPY ${SRC} DESTINATION ${DST} PATTERN .svn EXCLUDE)
> 
Thanks, I will see if this works for me.

> Because FILE(COPY ...) copies files and directories only if they are new
Does it mean it is a bug if FILE(COPY ...) doesn't copy new files?

> or have been touched you can probably afford the script's execution each
> time you build; use ADD_DEPENDENCIES() to ensure that the script runs at
> the right time.

Thanks
Dominique


_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to