It sounds like CMake is doing exactly what any good build system should
do.  A better solution is to modify your macro to accept some extra
depends to add to the custom command.

MACRO(GENERATE directory dependencies)
        ADD_CUSTOM_COMMAND(
                OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/generated.cpp
                DEPENDS ${GENERATOR} ${dependencies}
                COMMAND ${GENERATOR}
                ARGS -o generated.cpp ${directory}
        )
        SET(SOURCES ${SOURCES} 
                ${CMAKE_CURRENT_BINARY_DIR}/gomgenerated.cpp)
ENDMACRO(GENERATE) 

GENERATE(myDir "target1 target2")

If you insist on running the command every time, an old build trick you
may try is to make a target that never builds a file.  That way it will
run every time.

ADD_CUSTOM_COMMAND(
        OUTPUT NotAFile
        COMMAND ${CMAKE_COMMAND} ARGS -E echo "Forcing Target"
)
ADD_CUSTOM_COMMAND(
        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/generated.cpp
        DEPENDS NotAFile
        COMMAND ${GENERATOR}
        ARGS -o generated.cpp ${directory}
)

-Ken

> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On Behalf Of cedric
> Sent: Thursday, February 09, 2006 7:50 AM
> To: [email protected]
> Subject: [CMake] ADD_CUSTOM_COMMAND and dependencies
> 
> Hello,
> 
> I'm using cmake in a project and have some trouble with 
> ADD_CUSTOM_COMMAND.
> What I need is generate a source file with a binary 
> previously generated by the project and then add it in the project.
> 
> It works with this code :
> 
> MACRO(GENERATE directory)
>       ADD_CUSTOM_COMMAND(
>               OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/generated.cpp
>               DEPENDS ${GENERATOR}
>               COMMAND ${GENERATOR}
>               ARGS -o generated.cpp ${directory}
>       )
>       SET(SOURCES ${SOURCES} 
> ${CMAKE_CURRENT_BINARY_DIR}/gomgenerated.cpp)
> ENDMACRO(GENERATE)
> 
> it works well but it run only when ${GENERATOR} is modified. 
> I canot add  other dependecies because this macro is run on 
> many directories that change often.
> The generator parse all files in ${directory} to check what 
> it have to generate and if it need to generate something.
> What I need is to run that command every time I run make. I 
> tryed to remove the DEPENDS line but it doesn't work better.
> There is a way to do what I need with CMake (in a portable 
> way if possible) ?
> Thanks for your help.
> 
> _______________________________________________
> CMake mailing list
> [email protected]
> http://www.cmake.org/mailman/listinfo/cmake
> 
> 

_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to