[CMake] How to regenerate source file during make?

David Cole david.cole at kitware.com
Fri Jan 15 10:07:41 EST 2010


On Fri, Jan 15, 2010 at 9:44 AM, Marcel Loose <loose at astron.nl> wrote:

> Hi Jack,
>
> The difference with your and my case is that you have an input file
> (the .xsd file) and output files (the .h and .cpp files). In my case I
> generate the output file, e.g. myheader.h, from myheader.h.in, using
> configure_file(). The problem is that I cannot get this to work during
> 'make', only during 'cmake'.
>
> Best regards,
> Marcel Loose.
>
> On Fri, 2010-01-15 at 15:04 +0100, Smith Jack (Ext. - UGIS - UniCredit
> Group) wrote:
> > 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.
>

This should work already: if you change my_header.h.in then cmake should
re-run to re-configure your file at 'make' time.

If you have additional dependencies that should trigger a re-configure, you
should probably convert it to an add_custom_command such that it happens at
build time.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20100115/2358a0d4/attachment.htm>


More information about the CMake mailing list