[CMake] How to regenerate source file during make?

Ryan Pavlik rpavlik at iastate.edu
Fri Jan 15 10:01:50 EST 2010


You might be able to configure the file twice - once during configure 
time (so dependency generation and adding to the build work right), and 
then again before the build - Take a look at the add_custom_command 
documentation, especially the PRE_BUILD part.

Ryan

On 01/15/2010 08:44 AM, Marcel Loose 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.
>>>
>>>
>>> _______________________________________________
>>> 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
>>>
>>>        
>> _______________________________________________
>> 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
>>      
>
> _______________________________________________
> 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
>    

-- 
Ryan Pavlik
HCI Graduate Student
Virtual Reality Applications Center
Iowa State University

rpavlik at iastate.edu
http://academic.cleardefinition.com
Internal VRAC/HCI Site: http://tinyurl.com/rpavlik



More information about the CMake mailing list