I am attempting to supply some \"source\" files with some executables. I was wondering if there was a way to copy these source files to the build directory (From the source dire
You can copy the file to your build tree using add_custom_command by adding something like the following:
add_custom_command(TARGET MyExe POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${CMAKE_CURRENT_SOURCE_DIR}/src/some_opencl_kernel.cl
$
)
This adds a post-build event to your target (I've called it MyExe) which copies the file src/some_opencl_kernel.cl to the same directory in your build tree as your executable.
There are various other ways of copying a file into the build tree, but I like this one since it uses the "generator expression" $ to identify the location of the executable's directory in the build tree. This can vary depending on e.g. build-type or platform, so the generator expression is about the most reliable, cross-platform way of specifying this location I feel.
As for installing, you can just use the install(FILES ...) command. Assuming for your executable you have something like:
install(TARGETS MyExe RUNTIME DESTINATION bin)
you can just add:
install(FILES src/some_opencl_kernel.cl DESTINATION bin)
which will install it to ${CMAKE_INSTALL_PREFIX}/bin/some_opencl_kernel.cl alongside the executable.