On Thu, Mar 04, 2010 at 11:50:14AM -0800, [email protected] wrote:
> For example, this doesn't work:
>
> ADD_EXECUTABLE(foo ${foo_SOURCES} ${foo_HEADERS})
>
> ADD_CUSTOM_COMMAND(
> OUTPUT "${PROJECT_BINARY_DIR}/bar.ini"
> COMMAND ${CMAKE_COMMAND} -E copy "${PROJECT_SOURCE_DIR}/bar.ini"
> "${PROJECT_BINARY_DIR}"
> DEPENDS "${PROJECT_SOURCE_DIR}/bar.ini"
> COMMENT "Localizing \"bar.ini\"")
>
> ADD_DEPENDENCIES(foo "${PROJECT_BINARY_DIR}/bar.ini")
add_dependencies() is for adding dependencies on targets, not on files.
> I can also get it to work if I add another target like so:
>
> ADD_EXECUTABLE(foo ${foo_SOURCES} ${foo_HEADERS})
>
> ADD_CUSTOM_COMMAND(
> OUTPUT "${PROJECT_BINARY_DIR}/bar.ini"
> COMMAND ${CMAKE_COMMAND} -E copy "${PROJECT_SOURCE_DIR}/bar.ini"
> "${PROJECT_BINARY_DIR}"
> DEPENDS "${PROJECT_SOURCE_DIR}/bar.ini"
> COMMENT "Localizing \"bar.ini\"")
>
> ADD_CUSTOM_TARGET(copy_bar.ini DEPENDS "${PROJECT_BINARY_DIR}/bar.ini")
>
> ADD_DEPENDENCIES(foo copy_bar.ini)
AFIAK this is the "right" way to do what you want.
> So do I have to have this additional indirection with the extra target? I
> have way too many targets as is. Is there anyway to get the first approach
> to work? It's like I need to add a file to ${foo_SOURCES} or
> ${foo_HEADERS} that isn't compiled or that doesn't show up in the IDE. And
> can this be done after the ADD_EXECUTABLE call, or does it have to be
> before?
You could try a PRE_BUILD custom_command instead. I think that will run
every time instead of just when bar.ini has changed.
If you are going to tweak foo_SOURCES, you will need to do it before you
call add_executable().
tyler
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake