Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

cmake: How to make a script for copying Data files accompanying my program

I am trying to automate my build process with cmake. There is currently only one issue:

Where is, in cmake's philosophy (if there is one), the best place to put the copying of data files.

I have a library and a few examples. The examples need the data.

I currently do the following:

I use a custom command in each example's CMakeLists.txt to copy all the Data into the CMAKE_CURRENT_BINARY_DIR in a post-build step. I use this in my debugging workflow, so no install target is executed yet.

This works quite well, but has certain drawbacks:

  1. The copying occurs everytime the project is built. With VS 2005 this sometimes occurs even if it is not newly built. Since the data folders are big, the copying takes time, and it gets a bit annoying.
  2. I am certain that this is a very clumsy way of doing this.

I want to copy those directories to the executable paths, so I don't need hints how to set the debug working directory

The perfect time to copy these directories would be at cmake configuration/generation time, at least I think so. Should I do this, and how would I do this?

like image 746
AndreasT Avatar asked Oct 20 '09 11:10

AndreasT


1 Answers

As recently seen in this question, you can use configure_file to copy files to the build directory:

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/input.txt
    ${CMAKE_CURRENT_BINARY_DIR}/output.txt COPYONLY)

That does it once at build time and only when needed.

like image 71
richq Avatar answered Nov 10 '22 03:11

richq