The reasoning is this: when a target is about to be built, it checks its dependencies and if any are out of date (or don't exist), it triggers their building. The binary-dir file is built by the custom command. So when the custom target is built, it will check its dependency (the binary-dir file) and trigger a run of the custom command which is registered to OUTPUT that file.
Petr On Mon, Jun 30, 2014 at 4:25 PM, Eric Wing <ewmail...@gmail.com> wrote: > Okay, I switched just the add_custom_target DEPENDS to the binary > directory (but left the add_custom_command alone). That seems to be > doing what I need. I think I'm still not fully understanding the > reasoning behind it, but problem solved I guess. > > Thanks, > Eric > > > On 6/30/14, Eric Wing <ewmail...@gmail.com> wrote: > > Thanks for the reply. So the usage case is that people are going to be > > modifying the resources in the source directory. (These changes have > > to be checked into revision control.) So I'm having trouble seeing how > > depending on the binary directory is going to work. (The reason I must > > copy the resources to the binary directory is it is impossible to > > launch the application through the debugger or otherwise.) > > > > Thanks, > > Eric > > > > > > On 6/30/14, Petr Kmoch <petr.km...@gmail.com> wrote: > >> Hi Eric. > >> > >> It seems to me that you're copying from source dir to binary dir, but > all > >> dependencies are on the source dir file only. Therefore, there is > nothing > >> to trigger the generation of the binary-dir file. Perhaps you wanted > >> 'fooresources' to depend on the binary-dir file instead? > >> > >> Petr > >> > >> > >> On Mon, Jun 30, 2014 at 3:20 PM, Eric Wing <ewmail...@gmail.com> wrote: > >> > >>> I need to copy resource files from the source directory to the binary > >>> directory with the creation of my executable. I want CMake's > >>> dependency tracking to handle (re)copying these files whenever the > >>> source has been touched. > >>> > >>> Looking at other similar questions like: > >>> > >>> > http://stackoverflow.com/questions/17018477/cmake-adding-custom-resources-to-build-directory > >>> and the CMake FAQ: How can I add a dependency to a source file which > >>> is generated in a subdirectory? > >>> http://www.cmake.org/Wiki/CMake_FAQ > >>> > >>> I expected the following (simplified) code to work, but it doesn't. I > >>> see the add_custom_target processed in the make chain, but the > >>> add_custom_command never triggers. > >>> > >>> > >>> > >>> project(foo) > >>> > >>> cmake_minimum_required(VERSION 2.8) > >>> > >>> add_executable(fooexe > >>> ${CMAKE_SOURCE_DIR}/foo.c > >>> ${CMAKE_SOURCE_DIR}/asset1.lua > >>> # ${CMAKE_SOURCE_DIR}/subdir/subasset1.lua > >>> ) > >>> > >>> add_custom_command( > >>> OUTPUT "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INT}/asset1.lua" > >>> COMMAND ${CMAKE_COMMAND} -E copy_if_different > >>> "${CMAKE_SOURCE_DIR}/asset1.lua" > >>> "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INT}/" > >>> DEPENDS "${CMAKE_SOURCE_DIR}/asset1.lua" > >>> COMMENT "Copying asset1.lua" > >>> ) > >>> > >>> # files are only copied if a target depends on them > >>> add_custom_target(fooresources ALL DEPENDS > >>> "${CMAKE_SOURCE_DIR}/asset1.lua" > >>> COMMENT "fooresources custom target" > >>> ) > >>> ADD_DEPENDENCIES(fooexe fooresources) > >>> > >>> > >>> > >>> Would somebody explain to me the correct way to handle this? > >>> > >>> > >>> Thanks, > >>> Eric > >>> -- > >>> > >>> Powered by www.kitware.com > >>> > >>> Please keep messages on-topic and check the CMake FAQ at: > >>> http://www.cmake.org/Wiki/CMake_FAQ > >>> > >>> Kitware offers various services to support the CMake community. For > more > >>> information on each offering, please visit: > >>> > >>> CMake Support: http://cmake.org/cmake/help/support.html > >>> CMake Consulting: http://cmake.org/cmake/help/consulting.html > >>> CMake Training Courses: http://cmake.org/cmake/help/training.html > >>> > >>> Visit other Kitware open-source projects at > >>> http://www.kitware.com/opensource/opensource.html > >>> > >>> Follow this link to subscribe/unsubscribe: > >>> http://public.kitware.com/mailman/listinfo/cmake > >>> > >> > > > > > > -- > > Beginning iPhone Games Development > > http://playcontrol.net/iphonegamebook/ > > > > > -- > Beginning iPhone Games Development > http://playcontrol.net/iphonegamebook/ >
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake