[CMake] add_custom_command and CONFIG-dependent output

Braden McDaniel braden at endoframe.com
Mon Aug 25 01:53:00 EDT 2014


On Fri, 2014-08-22 at 16:58 -0400, David Cole via CMake wrote:
> Use "${CMAKE_CFG_INTDIR}" in the context of add_custom_command OUTPUT,
> not $<CONFIG>.
> 
> You may also use that in the COMMAND arguments.
> 
> See documentation here:
> http://www.cmake.org/cmake/help/v3.0/variable/CMAKE_CFG_INTDIR.html
> 
> The $<> generator expressions are relatively new, and do not work in
> all contexts that you might expect yet. CMAKE_CFG_INTDIR has been
> around for quite some time, though, and works very well with custom
> commands.

Ah, thanks... Though, I think there may be a general disconnect here:
that is, it seems likely that one would want to construct output with a
pattern composed from generator expressions.  For instance, in a
subsequent rule I attempted to do this:

    set(LIB "$<TARGET_FILE:${LIBRARY_TARGET}>")
    set(STAGED_LIB "${LIB_STAGEDIR}/$<TARGET_FILE_NAME:${LIBRARY_TARGET}>")
    add_custom_command(
        OUTPUT ${STAGED_LIB}
        COMMAND ${CMAKE_COMMAND} -E copy ${LIB} ${STAGED_LIB}
        MAIN_DEPENDENCY ${LIB_STAGEDIR}
    )

... which obviously has the same problem.

While I gather from your comment that something like this might be
possible in the future, is there some other general approach that can be
taken with current CMake?

Braden




More information about the CMake mailing list