[CMake] feature request: easy to to specify actions for all files with a certain extension

Michael Jackson mike.jackson at bluequartz.net
Thu Feb 19 13:05:19 EST 2009


Nice Idea.
   In the mean time you might want to take a look at FindQt4.cmake in  
the Modules directory. In that file are some macros like:

   # QT4_WRAP_CPP(outfiles inputfile ... )

   MACRO (QT4_WRAP_CPP outfiles )
     # get include dirs
     QT4_GET_MOC_FLAGS(moc_flags)
     QT4_EXTRACT_OPTIONS(moc_files moc_options ${ARGN})

     FOREACH (it ${moc_files})
       GET_FILENAME_COMPONENT(it ${it} ABSOLUTE)
       QT4_MAKE_OUTPUT_FILE(${it} moc_ cxx outfile)
       QT4_CREATE_MOC_COMMAND(${it} ${outfile} "${moc_flags}" "$ 
{moc_options}")
       SET(${outfiles} ${${outfiles}} ${outfile})
     ENDFOREACH(it)

   ENDMACRO (QT4_WRAP_CPP)

Where you feed it some source files and it will run the qt "moc"  
program on the input files and produce new output files that can then  
be compiled. You may want to  implement something like that for your  
own special preprocessors.


_________________________________________________________
Mike Jackson                  mike.jackson at bluequartz.net
BlueQuartz Software                    www.bluequartz.net
Principal Software Engineer                  Dayton, Ohio



On Feb 19, 2009, at 12:10 PM, Bill O'Hara wrote:

> I've not seen a straightforward way to do this, but would happily be  
> corrected :-)
>
> I have a few types of files in our project which, based on the  
> extension, need certain actions performed as part of the build. For  
> example, foo.S would require running cpp on the file before  
> assembling it. Or, several .fS files which are written in our own in- 
> house macro language - you need to run our preprocessor before  
> assembly. While I can add custom commands, or try to figure out how  
> to add a new language support to cmake, it'd be nice if there were  
> an easy way to specify a generic action to take when seeing a file  
> with a certain extension.
>
> Blue-skying, if I were to say
>
> add_command_pattern(EXTENSION "fS"
>   COMMAND foopreprocessor file.fS -o file.s)
>
> add_executable(hello hello.c foo.fS)
>
> and then the sequence of actions would be
>
> foopreprocessor foo.fS -o foo.s
> cc -o hello hello.c foo.s
>
> Is this reasonable? Or is there a simple way I'm overlooking to  
> declare such generic actions based on file extensions?
>
> thanks!
> b.
>
>
> _______________________________________________
> 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