[CMake] Copying matching files
Brad King
brad.king at kitware.com
Tue Oct 3 11:07:12 EDT 2006
Hugo Costelha wrote:
> I need to copy all files that match a certain patter during compilation time.
> I am currenlty using the following in CMakeLists.txt:
>
> FILE(GLOB luts "lut*")
> FOREACH(file ${luts})
> GET_FILENAME_COMPONENT(basename ${file} NAME)
> ADD_CUSTOM_TARGET( luts ALL
> COMMAND ${CMAKE_COMMAND}
> -E copy ${file} ${LIBRARY_OUTPUT_PATH} )
> ENDFOREACH(file)
>
>
> However, there is a huge problem with this code. It creates fixed rules when
> running "cmake .", i.e., if I run "cmake .", then create a file lutA, then
> run make, it will not copy lutA, since it didn't exist when I ran cmake.
>
> Does anyone know of a good alternative to do this, that really performs
> something like "cp lut* <location>"?
You can add a custom target that runs
cmake -P myscript.cmake
and then put the glob/copy code in the script. In the script use
EXECUTE_PROCESS to call cmake -E copy in a FOREACH on the result of the
glob.
-Brad
More information about the CMake
mailing list