[CMake] Copy a input file from src folder to EXECUTABLE_OUTPUT_PATH
Michael Hertling
mhertling at online.de
Mon Dec 5 19:41:59 EST 2011
On 12/05/2011 10:30 PM, Totte Karlsson wrote:
> Hi,
> I have a tree of applications, some needing an inoput file to run. I have CMake
> compiling all of them and moving the executables to
> EXECUTABLE_OUTPUT_PATH. In the src directories, I have some input.txt files that
> I want to be moved to the same folder as the executables.
> How do I do that in CMake?
At configuration time:
CONFIGURE_FILE(<path>/<to>/input.txt ${EXECUTABLE_OUTPUT_PATH} COPYONLY)
Note that the destination directory, i.e. the EXECUTABLE_OUTPUT_PATH,
possibly must already exist, and refer to the EXECUTABLE_OUTPUT_PATH
variable only after it has received its value. BTW, this variable is
obsolete, use [CMAKE_]RUNTIME_OUTPUT_DIRECTORY[_<CONFIG>] variable/
properties instead.
At build time:
ADD_CUSTOM_TARGET(input ${CMAKE_COMMAND} -E copy_if_different
<path>/<to>/input.txt ${EXECUTABLE_OUTPUT_PATH})
ADD_DEPENDENCIES(OneOfYourExecutables input)
ADD_DEPENDENCIES(AnotherExecutable input)
or
ADD_CUSTOM_COMMAND(TARGET OneOfYourExecutables
COMMAND ${CMAKE_COMMAND} -E copy_if_different
<path>/<to>/input.txt $<TARGET_FILE_DIR:OneOfYourExecutables>)
ADD_CUSTOM_COMMAND(TARGET AnotherExecutable
COMMAND ${CMAKE_COMMAND} -E copy_if_different
<path>/<to>/input.txt $<TARGET_FILE_DIR:AnotherExecutable>)
Personally, I'd prefer the latter as it's clean and quite flexible.
Regards,
Michael
More information about the CMake
mailing list