[CMake] How to regenerate source file during make?

Smith Jack (Ext. - UGIS - UniCredit Group) jack.smith.extern at unicreditgroup.de
Fri Jan 15 09:04:59 EST 2010


I do a similar thing with an XSD file from which I generate c++ wrapper classes for accessing the corresponding XML

Note the DEPENDS line !

MACRO(XSD FILE NAMESPACE)
    ADD_CUSTOM_COMMAND(
        OUTPUT  ${CMAKE_CURRENT_SOURCE_DIR}/xml/${FILE}.cpp
        OUTPUT  ${CMAKE_CURRENT_SOURCE_DIR}/xml/${FILE}.h
        DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/xml/${FILE}.xsd
        COMMAND ${XAPI_CODESYNTH}/bin/xsd
        ARGS cxx-tree --generate-serialization --hxx-suffix .h --cxx-suffix .cpp --fwd-suffix -fwd.hxx --type-naming java --function-naming java --namespace-map =${NAMESPACE} --generate-polymorphic --output-dir ${CMAKE_CURRENT_SOURCE_DIR}/xml ${CMAKE_CURRENT_SOURCE_DIR}/xml/${FILE}.xsd
        COMMENT "generating Codesynthesis Wrappers")
ENDMACRO(XSD)



> -----Original Message-----
> From: cmake-bounces at cmake.org
> [mailto:cmake-bounces at cmake.org] On Behalf Of Marcel Loose
> Sent: Friday, January 15, 2010 2:55 PM
> To: cmake at cmake.org
> Subject: [CMake] How to regenerate source file during make?
>
> Hi all,
>
> I've been struggling with this for hours now and I can't seem
> to get a grip on it.
>
> I have a header file that must be (re)generated during 'make'
> when some external data have changed. I can successfully
> generate this file during 'cmake' using configure_file(), but
> I haven't been able to figure out how I can trigger the
> configure_file() during make.
>
> Should I define a target for this header file? Or can I
> specify some kind of file dependency, such that when the
> header file is missing our out-of-date, it will be (re)generated?
>
> I guess it must be some clever combination of
> add_custom_command() and add_custom_target().
>
> Best regards,
> Marcel Loose.
>
>
> _______________________________________________
> 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
>


More information about the CMake mailing list