I have tried a different approach that has been more successful:

add_custom_target(CopyXML ${CMAKE_COMMAND} -E copy_directory
        ${CMAKE_CURRENT_SOURCE_DIR}/XML ${EXECUTABLE_OUTPUT_PATH}

add_dependencies(UnitTest CopyXML)

This will always copy the files whether they need to be updated or not, however I cannot think of anything else that will cause the file to get copied.

Another problem is that when I build this target from an IDE like Apple's Xcode, the file are copied to ${EXECUTABLE_OUTPUT_PATH}, however the built executable is copied to ${EXECUTABLE_OUTPUT_PATH}/ Debug when building the debug version the application.

How can I get the copied files and built executable to appear in the same directory.

On Dec 11, 2008, at 8:44 o'clock, Tron Thomas wrote:

I have a project configured with CMake that needs to have set of XML files copied to the directory where executables are built so that a unit test that relies on these files can execute.

I tried to create a custom command that should copy the files and tried to set that command up as dependency of the unit test application. However when the application builds the files are not copied to the needed directory.

Here is the gist of how I tried to perform the copy:

file(GLOB SourceXMLFiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/XML XML/*.xml)

foreach(File ${SourceXMLFiles})
        set(XMLFiles "${XMLFiles} ${EXECUTABLE_OUTPUT_PATH}/${File}")
endforeach(File)

add_custom_command(OUTPUT ${XMLFiles}
        COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory
                ${CMAKE_CURRENT_SOURCE_DIR}/XML ${EXECUTABLE_OUTPUT_PATH}
        DEPENDS ${SourceXMLFiles})

add_dependencies(UnitTest ${XMLFiles})

What can be done to copy the needed files to the unit test directory?


_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to